{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "1018.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "TPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5Mf4r4sReSDF",
        "colab_type": "text"
      },
      "source": [
        "# 1"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RCfeLHYBd_Vf",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import torchvision \n",
        "import torchvision.transforms as transforms"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iKpEubGXgz_k",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "sequence_length = 28 \n",
        "input_size = 28 \n",
        "hidden_size = 128 \n",
        "num_layers = 2 \n",
        "num_classes = 10 \n",
        "batch_size = 100 \n",
        "num_epochs = 2 \n",
        "learning_rate = 0.01 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SiHYYENWhPYI",
        "colab_type": "code",
        "outputId": "41544e11-7a66-40d2-afb7-f4165814289b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 843
        }
      },
      "source": [
        "train_dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)\n",
        "test_dataset = torchvision.datasets.MNIST(root='./data', train=False, transform=transforms.ToTensor())\n",
        "\n",
        "train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\n",
        "test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\r0it [00:00, ?it/s]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "100%|█████████▉| 9912320/9912422 [00:27<00:00, 232481.04it/s]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/train-images-idx3-ubyte.gz to ./data/MNIST/raw\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "0it [00:00, ?it/s]\u001b[A"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./data/MNIST/raw/train-labels-idx1-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "  0%|          | 0/28881 [00:00<?, ?it/s]\u001b[A\n",
            " 57%|█████▋    | 16384/28881 [00:00<00:00, 86280.38it/s]\u001b[A\n",
            "32768it [00:00, 57252.08it/s]                           \u001b[A\n",
            "0it [00:00, ?it/s]\u001b[A"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/train-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
            "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "  0%|          | 0/1648877 [00:00<?, ?it/s]\u001b[A\n",
            "  1%|          | 16384/1648877 [00:00<00:21, 76609.23it/s]\u001b[A\n",
            "  2%|▏         | 40960/1648877 [00:00<00:18, 87959.00it/s]\u001b[A\n",
            "  5%|▍         | 81920/1648877 [00:00<00:14, 107534.07it/s]\u001b[A\n",
            "  7%|▋         | 122880/1648877 [00:01<00:11, 127199.43it/s]\u001b[A\n",
            " 10%|▉         | 163840/1648877 [00:01<00:10, 146079.03it/s]\u001b[A\n",
            " 12%|█▏        | 204800/1648877 [00:01<00:08, 163024.12it/s]\u001b[A\n",
            " 15%|█▌        | 253952/1648877 [00:01<00:07, 184715.00it/s]\u001b[A\n",
            " 18%|█▊        | 294912/1648877 [00:01<00:06, 194987.86it/s]\u001b[A\n",
            " 21%|██        | 344064/1648877 [00:02<00:06, 212409.37it/s]\u001b[A\n",
            " 24%|██▍       | 401408/1648877 [00:02<00:05, 235104.10it/s]\u001b[A\n",
            " 27%|██▋       | 450560/1648877 [00:02<00:04, 244384.51it/s]\u001b[A\n",
            " 31%|███       | 507904/1648877 [00:02<00:04, 261740.85it/s]\u001b[A\n",
            " 35%|███▍      | 573440/1648877 [00:02<00:03, 284797.44it/s]\u001b[A\n",
            " 38%|███▊      | 630784/1648877 [00:02<00:03, 292909.58it/s]\u001b[A\n",
            " 43%|████▎     | 704512/1648877 [00:03<00:02, 318918.45it/s]\u001b[A\n",
            " 47%|████▋     | 770048/1648877 [00:03<00:02, 329857.22it/s]\u001b[A\n",
            " 51%|█████     | 843776/1648877 [00:03<00:02, 348978.25it/s]\u001b[A\n",
            " 56%|█████▌    | 925696/1648877 [00:03<00:01, 372759.33it/s]\u001b[A\n",
            " 61%|██████    | 999424/1648877 [00:03<00:01, 383005.39it/s]\u001b[A\n",
            " 66%|██████▌   | 1089536/1648877 [00:04<00:01, 407442.59it/s]\u001b[A\n",
            " 72%|███████▏  | 1179648/1648877 [00:04<00:01, 430194.34it/s]\u001b[A\n",
            " 77%|███████▋  | 1269760/1648877 [00:04<00:00, 452544.03it/s]\u001b[A\n",
            " 83%|████████▎ | 1368064/1648877 [00:04<00:00, 475748.79it/s]\u001b[A\n",
            " 89%|████████▉ | 1474560/1648877 [00:04<00:00, 497549.66it/s]\u001b[A\n",
            " 96%|█████████▌| 1581056/1648877 [00:04<00:00, 528217.19it/s]\u001b[A\n",
            "\n",
            "0it [00:00, ?it/s]\u001b[A\u001b[A"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw\n",
            "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "\n",
            "  0%|          | 0/4542 [00:00<?, ?it/s]\u001b[A\u001b[A\n",
            "\n",
            "8192it [00:00, 20583.77it/s]            \u001b[A\u001b[A"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
            "Processing...\n",
            "Done!\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uf7cF9eYiJ5I",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class RNN(nn.Module):\n",
        "  def __init__(self, input_size, hidden_size, num_layers, num_classes):\n",
        "    super(RNN, self).__init__()\n",
        "    self.hidden_size = hidden_size \n",
        "    self.num_layers = num_layers \n",
        "    self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)\n",
        "    self.fc = nn.Linear(hidden_size, num_classes)\n",
        "\n",
        "  def forward(self, x):\n",
        "    h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)\n",
        "    c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)\n",
        "\n",
        "    out, _ = self.lstm(x, (h0, c0))\n",
        "\n",
        "    out = self.fc(out[:, -1, :])\n",
        "    return out "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "CaQycLx2jxnp",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = RNN(input_size, hidden_size, num_layers, num_classes)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VCUBtKPTj5z6",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.CrossEntropyLoss()\n",
        "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "09cnE9V8kFxC",
        "colab_type": "code",
        "outputId": "b18b4db4-d784-472e-b2d3-9e722d1560f0",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "len(train_loader)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "600"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tuCRulovkMui",
        "colab_type": "code",
        "outputId": "8257c8e6-355f-489e-94e2-a4c177198b34",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 228
        }
      },
      "source": [
        "total_step = len(train_loader)\n",
        "for epoch in range(num_epochs):\n",
        "  for i, (images, labels) in enumerate(train_loader):\n",
        "    images = images.reshape(-1, sequence_length, input_size)\n",
        "    labels = labels\n",
        "\n",
        "    outputs = model(images)\n",
        "    loss = criterion(outputs, labels)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (i+1) % 100 == 0:\n",
        "      print('Epoch [{}/{}], Step [{}/{}], Loss:{:.4f}'.format(epoch+1,num_epochs, i+1, total_step, loss.item()))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [1/2], Step [100/600], Loss:0.6740\n",
            "Epoch [1/2], Step [200/600], Loss:0.3524\n",
            "Epoch [1/2], Step [300/600], Loss:0.2426\n",
            "Epoch [1/2], Step [400/600], Loss:0.1210\n",
            "Epoch [1/2], Step [500/600], Loss:0.2524\n",
            "Epoch [1/2], Step [600/600], Loss:0.1792\n",
            "Epoch [2/2], Step [100/600], Loss:0.1532\n",
            "Epoch [2/2], Step [200/600], Loss:0.1403\n",
            "Epoch [2/2], Step [300/600], Loss:0.0328\n",
            "Epoch [2/2], Step [400/600], Loss:0.0383\n",
            "Epoch [2/2], Step [500/600], Loss:0.0148\n",
            "Epoch [2/2], Step [600/600], Loss:0.0415\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ITEjAUYolKEu",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "with torch.no_grad():\n",
        "  correct = 0 \n",
        "  total = 0 \n",
        "  for images, labels in test_loader:\n",
        "    images"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "I8HfBxAownZh",
        "colab_type": "text"
      },
      "source": [
        "# 2"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qrsAhvQowlvR",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import torchvision \n",
        "import torchvision.transforms as transforms "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3mpBpbErw35Y",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "sequence_length = 28 \n",
        "input_size = 28 \n",
        "hidden_size = 128 \n",
        "num_layers = 2 \n",
        "num_classes = 10 \n",
        "batch_size = 100 \n",
        "num_epochs = 2 \n",
        "learning_rate = 0.001 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qvcqH0BGxKU2",
        "colab_type": "code",
        "outputId": "6aad55c0-36ee-42a3-80dc-4afd888536a4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 283
        }
      },
      "source": [
        "train_dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)\n",
        "test_dataset = torchvision.datasets.MNIST(root='./data', train=False, transform=transforms.ToTensor())\n",
        "\n",
        "train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\n",
        "test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  0%|          | 0/9912422 [00:00<?, ?it/s]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "9920512it [00:00, 19181872.15it/s]                            \n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/train-images-idx3-ubyte.gz to ./data/MNIST/raw\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "32768it [00:00, 311895.54it/s]                           \n",
            "0it [00:00, ?it/s]"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./data/MNIST/raw/train-labels-idx1-ubyte.gz\n",
            "Extracting ./data/MNIST/raw/train-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
            "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "1654784it [00:00, 4740675.91it/s]                           \n",
            "8192it [00:00, 110768.90it/s]\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Extracting ./data/MNIST/raw/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw\n",
            "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n",
            "Extracting ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
            "Processing...\n",
            "Done!\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bF9KA6e9yIs1",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class BiRNN(nn.Module):\n",
        "  def __init__(self, input_size, hidden_size, num_layers, num_classes):\n",
        "    super(BiRNN, self).__init__()\n",
        "    self.hidden_size = hidden_size \n",
        "    self.num_layers = num_layers \n",
        "    self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, bidirectional=True)\n",
        "    self.fc = nn.Linear(hidden_size*2, num_classes)\n",
        "\n",
        "  def forward(self, x):\n",
        "    h0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size)\n",
        "    c0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size)\n",
        "\n",
        "    out, _ = self.lstm(x, (h0, c0))\n",
        "\n",
        "    out = self.fc(out[:, -1, :])\n",
        "    return out "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xYKIkfeKztw0",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = BiRNN(input_size, hidden_size, num_layers, num_classes)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5z3Xplt0z_G4",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.CrossEntropyLoss()\n",
        "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5Qm7IY7B0YbX",
        "colab_type": "code",
        "outputId": "d4257a0e-1e9d-4005-e97e-f2e58e956a67",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 228
        }
      },
      "source": [
        "total_step = len(train_loader)\n",
        "for epoch in range(num_epochs):\n",
        "  for i, (images, labels) in enumerate(train_loader):\n",
        "    images = images.reshape(-1, sequence_length, input_size)\n",
        "    labels = labels \n",
        "\n",
        "    outputs = model(images)\n",
        "    loss = criterion(outputs, labels)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (i+1) % 100 == 0:\n",
        "      print('Epoch [{}/{}], Step [{}/{}], Loss:{:.4f}'.format(epoch+1, num_epochs, i+1, total_step, loss.item()))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [1/2], Step [100/600], Loss:0.0598\n",
            "Epoch [1/2], Step [200/600], Loss:0.0603\n",
            "Epoch [1/2], Step [300/600], Loss:0.1302\n",
            "Epoch [1/2], Step [400/600], Loss:0.1141\n",
            "Epoch [1/2], Step [500/600], Loss:0.1156\n",
            "Epoch [1/2], Step [600/600], Loss:0.0670\n",
            "Epoch [2/2], Step [100/600], Loss:0.0266\n",
            "Epoch [2/2], Step [200/600], Loss:0.0247\n",
            "Epoch [2/2], Step [300/600], Loss:0.0696\n",
            "Epoch [2/2], Step [400/600], Loss:0.0539\n",
            "Epoch [2/2], Step [500/600], Loss:0.0565\n",
            "Epoch [2/2], Step [600/600], Loss:0.0267\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "72gQG88j1ew-",
        "colab_type": "code",
        "outputId": "02cc63d0-c0af-4ce3-8555-a8b7ec357886",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "with torch.no_grad():\n",
        "  correct = 0 \n",
        "  total = 0 \n",
        "  for images, labels in test_loader:\n",
        "    images = images.reshape(-1, sequence_length, input_size)\n",
        "    labels = labels \n",
        "    outputs = model(images)\n",
        "    _, predicted = torch.max(outputs.data, 1)\n",
        "    total += labels.size(0)\n",
        "    correct += (predicted == labels).sum().item()\n",
        "\n",
        "  print('Accuracy: {} %'.format(100 * correct / total))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Accuracy: 96.44 %\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QLt25noH2VWX",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "torch.save(model.state_dict(), 'model.ckpt')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uh2jIg3mv5ix",
        "colab_type": "text"
      },
      "source": [
        "# 3"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tODuQxtzwAdl",
        "colab_type": "code",
        "outputId": "3c6526f0-f522-4c1d-abfa-ff08d0f8b000",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "!git clone https://github.com/yunjey/pytorch-tutorial.git"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Cloning into 'pytorch-tutorial'...\n",
            "remote: Enumerating objects: 816, done.\u001b[K\n",
            "remote: Total 816 (delta 0), reused 0 (delta 0), pack-reused 816\u001b[K\n",
            "Receiving objects: 100% (816/816), 12.78 MiB | 32.16 MiB/s, done.\n",
            "Resolving deltas: 100% (432/432), done.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jcsCEXk2wAQI",
        "colab_type": "code",
        "outputId": "9a0e184e-7046-40c0-9b0c-f09280e2275b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "!ls pytorch-tutorial/tutorials/02-intermediate/language_model/data_utils.py"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "LICENSE  logo  README.md  tutorials\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "G5INcKWSv-vh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!cp ./pytorch-tutorial/tutorials/02-intermediate/language_model/data_utils.py ."
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ai8G2LH0xsOi",
        "colab_type": "code",
        "outputId": "006bef04-a09c-4dbe-8a7b-5fc422f641a4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "!ls"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "data  data_utils.py  model.ckpt  pytorch-tutorial  sample_data\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oWrp4Ege-l67",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "from torch.nn.utils import clip_grad_norm_ \n",
        "from data_utils import Dictionary, Corpus"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nvQM9r02vl17",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "embed_size = 128 \n",
        "hidden_size = 1024 \n",
        "num_layers = 1 \n",
        "num_epochs = 5 \n",
        "num_samples = 1000 \n",
        "batch_size = 20 \n",
        "seq_length = 30 \n",
        "learning_rate = 0.002 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cW7CbDuUylW5",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "corpus = Corpus()\n",
        "ids = corpus.get_data('./pytorch-tutorial/tutorials/02-intermediate/language_model/data/train.txt', batch_size)\n",
        "vocab_size = len(corpus.dictionary)\n",
        "num_batches = ids.size(1) // seq_length"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5AymAYA3zMo_",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class RNNLM(nn.Module):\n",
        "  def __init__(self, vocab_size, embed_size, hidden_size, num_layers):\n",
        "    super(RNNLM, self).__init__()\n",
        "    self.embed = nn.Embedding(vocab_size, embed_size)\n",
        "    self.lstm = nn.LSTM(embed_size, hidden_size, num_layers, batch_first=True)\n",
        "    self.linear = nn.Linear(hidden_size, vocab_size)\n",
        "\n",
        "  def forward(self, x, h):\n",
        "    x = self.embed(x)\n",
        "\n",
        "    out, (h, c) = self.lstm(x, h)\n",
        "\n",
        "    out = out.reshape(out.size(0)*out.size(1), out.size(2))\n",
        "\n",
        "    out = self.linear(out)\n",
        "    return out, (h, c)\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Cm1TXu4i0njP",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = RNNLM(vocab_size, embed_size, hidden_size, num_layers)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tKkExYxG0zO4",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.CrossEntropyLoss()\n",
        "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0OQDhtc11ANh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def detach(states):\n",
        "  return [state.detach() for state in states]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tl1Eh0He1LeP",
        "colab_type": "code",
        "outputId": "a153c795-3e08-4ac4-d90d-3922db3eb62d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "  states = (torch.zeros(num_layers, batch_size, hidden_size), \n",
        "        torch.zeros(num_layers, batch_size, hidden_size))\n",
        "\n",
        "  for i in range(0, ids.size(1) - seq_length, seq_length):\n",
        "    inputs = ids[:, i:i+seq_length]\n",
        "    targets = ids[:, (i+1):(i+1)+seq_length]\n",
        "    states = detach(states)\n",
        "    outputs, states = model(inputs, states)\n",
        "    loss = criterion(outputs, targets.reshape(-1))\n",
        "\n",
        "    model.zero_grad()\n",
        "    loss.backward()\n",
        "    clip_grad_norm_(model.parameters(), 0.5)\n",
        "    optimizer.step()\n",
        "\n",
        "    step = (i+1) // seq_length\n",
        "    if step % 100 == 0:\n",
        "      print('Epoch [{}/{}], Step [{}/{}], Loss:{:.4f}, Perplexity:{:5.2f}'\n",
        "          .format(epoch+1, num_epochs, step, num_batches, loss.item(), np.exp(loss.item())))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [1/5], Step [0/1549], Loss:9.2134, Perplexity:10030.72\n",
            "Epoch [1/5], Step [100/1549], Loss:5.9998, Perplexity:403.34\n",
            "Epoch [1/5], Step [200/1549], Loss:5.9472, Perplexity:382.68\n",
            "Epoch [1/5], Step [300/1549], Loss:5.7448, Perplexity:312.55\n",
            "Epoch [1/5], Step [400/1549], Loss:5.6560, Perplexity:286.01\n",
            "Epoch [1/5], Step [500/1549], Loss:5.1442, Perplexity:171.44\n",
            "Epoch [1/5], Step [600/1549], Loss:5.2042, Perplexity:182.03\n",
            "Epoch [1/5], Step [700/1549], Loss:5.3576, Perplexity:212.23\n",
            "Epoch [1/5], Step [800/1549], Loss:5.1896, Perplexity:179.39\n",
            "Epoch [1/5], Step [900/1549], Loss:5.1253, Perplexity:168.23\n",
            "Epoch [1/5], Step [1000/1549], Loss:5.1234, Perplexity:167.91\n",
            "Epoch [1/5], Step [1100/1549], Loss:5.3373, Perplexity:207.94\n",
            "Epoch [1/5], Step [1200/1549], Loss:5.1858, Perplexity:178.72\n",
            "Epoch [1/5], Step [1300/1549], Loss:5.0858, Perplexity:161.70\n",
            "Epoch [1/5], Step [1400/1549], Loss:4.8435, Perplexity:126.91\n",
            "Epoch [1/5], Step [1500/1549], Loss:5.1224, Perplexity:167.74\n",
            "Epoch [2/5], Step [0/1549], Loss:5.5021, Perplexity:245.21\n",
            "Epoch [2/5], Step [100/1549], Loss:4.5875, Perplexity:98.25\n",
            "Epoch [2/5], Step [200/1549], Loss:4.6983, Perplexity:109.76\n",
            "Epoch [2/5], Step [300/1549], Loss:4.6854, Perplexity:108.36\n",
            "Epoch [2/5], Step [400/1549], Loss:4.5681, Perplexity:96.36\n",
            "Epoch [2/5], Step [500/1549], Loss:4.0749, Perplexity:58.85\n",
            "Epoch [2/5], Step [600/1549], Loss:4.4149, Perplexity:82.67\n",
            "Epoch [2/5], Step [700/1549], Loss:4.4075, Perplexity:82.06\n",
            "Epoch [2/5], Step [800/1549], Loss:4.4542, Perplexity:85.99\n",
            "Epoch [2/5], Step [900/1549], Loss:4.2601, Perplexity:70.82\n",
            "Epoch [2/5], Step [1000/1549], Loss:4.2876, Perplexity:72.79\n",
            "Epoch [2/5], Step [1100/1549], Loss:4.5768, Perplexity:97.21\n",
            "Epoch [2/5], Step [1200/1549], Loss:4.4878, Perplexity:88.92\n",
            "Epoch [2/5], Step [1300/1549], Loss:4.2113, Perplexity:67.45\n",
            "Epoch [2/5], Step [1400/1549], Loss:3.9670, Perplexity:52.82\n",
            "Epoch [2/5], Step [1500/1549], Loss:4.3106, Perplexity:74.49\n",
            "Epoch [3/5], Step [0/1549], Loss:4.5721, Perplexity:96.75\n",
            "Epoch [3/5], Step [100/1549], Loss:3.9518, Perplexity:52.03\n",
            "Epoch [3/5], Step [200/1549], Loss:4.0313, Perplexity:56.34\n",
            "Epoch [3/5], Step [300/1549], Loss:3.9613, Perplexity:52.52\n",
            "Epoch [3/5], Step [400/1549], Loss:3.8691, Perplexity:47.90\n",
            "Epoch [3/5], Step [500/1549], Loss:3.4157, Perplexity:30.44\n",
            "Epoch [3/5], Step [600/1549], Loss:3.8441, Perplexity:46.72\n",
            "Epoch [3/5], Step [700/1549], Loss:3.7561, Perplexity:42.78\n",
            "Epoch [3/5], Step [800/1549], Loss:3.8210, Perplexity:45.65\n",
            "Epoch [3/5], Step [900/1549], Loss:3.5647, Perplexity:35.33\n",
            "Epoch [3/5], Step [1000/1549], Loss:3.5586, Perplexity:35.12\n",
            "Epoch [3/5], Step [1100/1549], Loss:3.9036, Perplexity:49.58\n",
            "Epoch [3/5], Step [1200/1549], Loss:3.8150, Perplexity:45.38\n",
            "Epoch [3/5], Step [1300/1549], Loss:3.5140, Perplexity:33.58\n",
            "Epoch [3/5], Step [1400/1549], Loss:3.2407, Perplexity:25.55\n",
            "Epoch [3/5], Step [1500/1549], Loss:3.5989, Perplexity:36.56\n",
            "Epoch [4/5], Step [0/1549], Loss:3.6303, Perplexity:37.72\n",
            "Epoch [4/5], Step [100/1549], Loss:3.3138, Perplexity:27.49\n",
            "Epoch [4/5], Step [200/1549], Loss:3.4855, Perplexity:32.64\n",
            "Epoch [4/5], Step [300/1549], Loss:3.4028, Perplexity:30.05\n",
            "Epoch [4/5], Step [400/1549], Loss:3.3711, Perplexity:29.11\n",
            "Epoch [4/5], Step [500/1549], Loss:2.9561, Perplexity:19.22\n",
            "Epoch [4/5], Step [600/1549], Loss:3.4122, Perplexity:30.33\n",
            "Epoch [4/5], Step [700/1549], Loss:3.2465, Perplexity:25.70\n",
            "Epoch [4/5], Step [800/1549], Loss:3.4669, Perplexity:32.04\n",
            "Epoch [4/5], Step [900/1549], Loss:3.0612, Perplexity:21.35\n",
            "Epoch [4/5], Step [1000/1549], Loss:3.0668, Perplexity:21.47\n",
            "Epoch [4/5], Step [1100/1549], Loss:3.3813, Perplexity:29.41\n",
            "Epoch [4/5], Step [1200/1549], Loss:3.2703, Perplexity:26.32\n",
            "Epoch [4/5], Step [1300/1549], Loss:3.0425, Perplexity:20.96\n",
            "Epoch [4/5], Step [1400/1549], Loss:2.7044, Perplexity:14.95\n",
            "Epoch [4/5], Step [1500/1549], Loss:3.0601, Perplexity:21.33\n",
            "Epoch [5/5], Step [0/1549], Loss:3.0986, Perplexity:22.17\n",
            "Epoch [5/5], Step [100/1549], Loss:2.8997, Perplexity:18.17\n",
            "Epoch [5/5], Step [200/1549], Loss:3.0940, Perplexity:22.07\n",
            "Epoch [5/5], Step [300/1549], Loss:3.0062, Perplexity:20.21\n",
            "Epoch [5/5], Step [400/1549], Loss:3.0082, Perplexity:20.25\n",
            "Epoch [5/5], Step [500/1549], Loss:2.6140, Perplexity:13.65\n",
            "Epoch [5/5], Step [600/1549], Loss:3.0598, Perplexity:21.32\n",
            "Epoch [5/5], Step [700/1549], Loss:2.9557, Perplexity:19.22\n",
            "Epoch [5/5], Step [800/1549], Loss:3.0882, Perplexity:21.94\n",
            "Epoch [5/5], Step [900/1549], Loss:2.7798, Perplexity:16.12\n",
            "Epoch [5/5], Step [1000/1549], Loss:2.7890, Perplexity:16.27\n",
            "Epoch [5/5], Step [1100/1549], Loss:3.0616, Perplexity:21.36\n",
            "Epoch [5/5], Step [1200/1549], Loss:2.9182, Perplexity:18.51\n",
            "Epoch [5/5], Step [1300/1549], Loss:2.7331, Perplexity:15.38\n",
            "Epoch [5/5], Step [1400/1549], Loss:2.3844, Perplexity:10.85\n",
            "Epoch [5/5], Step [1500/1549], Loss:2.7975, Perplexity:16.40\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OIPL9SiP3B0_",
        "colab_type": "code",
        "outputId": "f58f1d4f-2ab7-48b6-9a3b-0a6e2a6b9655",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 193
        }
      },
      "source": [
        "with torch.no_grad():\n",
        "  with open('samples.txt', 'w') as f:\n",
        "    state = (torch.zeros(num_layers, 1, hidden_size), \n",
        "             torch.zeros(num_layers, 1, hidden_size))\n",
        "\n",
        "    prob = torch.ones(vocab_size)\n",
        "    input = torch.multinomial(prob, num_samples=1).unsqueeze(1)\n",
        "    \n",
        "    for i in range(num_samples):\n",
        "      output, state = model(input, state)\n",
        "\n",
        "      prob = output.exp()\n",
        "      word_id = torch.multinomial(prob, num_samples=1).item()\n",
        "\n",
        "      input.fill_(word_id)\n",
        "\n",
        "      word = corpus.dictionary.idx2word[word_id]\n",
        "      word = '\\n' if word == '<eos>' else word + ' '\n",
        "\n",
        "      f.write(word)\n",
        "\n",
        "      if (i+1) % 100 == 0:\n",
        "        print('Sampled [{}/{}] words and save to {}'.format(i+1, num_samples, 'sample.txt'))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Sampled [100/1000] words and save to sample.txt\n",
            "Sampled [200/1000] words and save to sample.txt\n",
            "Sampled [300/1000] words and save to sample.txt\n",
            "Sampled [400/1000] words and save to sample.txt\n",
            "Sampled [500/1000] words and save to sample.txt\n",
            "Sampled [600/1000] words and save to sample.txt\n",
            "Sampled [700/1000] words and save to sample.txt\n",
            "Sampled [800/1000] words and save to sample.txt\n",
            "Sampled [900/1000] words and save to sample.txt\n",
            "Sampled [1000/1000] words and save to sample.txt\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "787TnGC84QHo",
        "colab_type": "code",
        "outputId": "2c794f57-5629-4770-b827-225d60e70e28",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "!ls"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "data\t       model.ckpt   pytorch-tutorial  samples.txt\n",
            "data_utils.py  __pycache__  sample_data\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lxw_dDMa5JGB",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "torch.save(model.state_dict(), 'model1.ckpt')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kxEOc7Bl5Rpy",
        "colab_type": "code",
        "outputId": "124da797-c017-4e6e-faed-d24b03f9d1f4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "!ls"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "data\t       model1.ckpt  __pycache__       sample_data\n",
            "data_utils.py  model.ckpt   pytorch-tutorial  samples.txt\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "whgQOLVo5kcY",
        "colab_type": "text"
      },
      "source": [
        "# 4"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "H5XPX8QD5THa",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import os \n",
        "import torch \n",
        "import torchvision \n",
        "import torch.nn as nn \n",
        "from torchvision import transforms \n",
        "from torchvision.utils import save_image "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UKVwwoCJ50lh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "latent_size = 64 \n",
        "hidden_size = 256 \n",
        "image_size = 784 \n",
        "bun_epochs = 100 \n",
        "batch_size = 100 \n",
        "sample_dir = 'samples'"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QvUddili6Ezx",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "if not os.path.exists(sample_dir):\n",
        "  os.makedirs(sample_dir)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "l3gLoSN-6TBa",
        "colab_type": "code",
        "outputId": "8f0491ea-a61b-41ea-f289-b80e08a3bb3a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 140
        }
      },
      "source": [
        "torch.zeros(2, 3, 4)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[[0., 0., 0., 0.],\n",
              "         [0., 0., 0., 0.],\n",
              "         [0., 0., 0., 0.]],\n",
              "\n",
              "        [[0., 0., 0., 0.],\n",
              "         [0., 0., 0., 0.],\n",
              "         [0., 0., 0., 0.]]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 55
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IjcD1hdA7EBy",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "transform = transforms.Compose([\n",
        "          transforms.ToTensor(), \n",
        "          transforms.Normalize(mean=(0.5, 0.5, 0.5), \n",
        "                    std=(0.5, 0.5, 0.5))\n",
        "])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "R3OOjVMU79x6",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "mnist = torchvision.datasets.MNIST(root='./data', train=True, transform=transform, download=True)\n",
        "\n",
        "data_loader = torch.utils.data.DataLoader(dataset=mnist, batch_size=batch_size, shuffle=True)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SHnGZMeM_eiL",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "D = nn.Sequential(\n",
        "    nn.Linear(image_size, hidden_size), \n",
        "    nn.LeakyReLU(0.2), \n",
        "    nn.Linear(hidden_size, hidden_size), \n",
        "    nn.LeakyReLU(0.2), \n",
        "    nn.Linear(hidden_size, 1), \n",
        "    nn.Sigmoid()\n",
        ")\n",
        "\n",
        "G = nn.Sequential(\n",
        "    nn.Linear(latent_size, hidden_size), \n",
        "    nn.ReLU(), \n",
        "    nn.Linear(hidden_size, hidden_size), \n",
        "    nn.ReLU(), \n",
        "    nn.Linear(hidden_size, image_size), \n",
        "    nn.Tanh()\n",
        ")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2xsiBWnDAulD",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.BCELoss()\n",
        "d_optimizer = torch.optim.Adam(D.parameters(), lr=0.0002)\n",
        "g_optimizer = torch.optim.Adam(G.parameters(), lr=0.0002)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ex1ZDhGGBM3z",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def denorm(x):\n",
        "    out = (x + 1) / 2 \n",
        "    return out.clamp(0, 1)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "hrRy6iNYBbub",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def reset_grad():\n",
        "    d_optimizer.zero_grad()\n",
        "    g_optimizer.zero_grad()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z1Y6T5Z_Bps8",
        "colab_type": "code",
        "outputId": "487f0aae-3e7d-42bc-ad24-23dc38183d75",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 386
        }
      },
      "source": [
        "total_step = len(data_loader)\n",
        "# for epoch in range(num_epochs):\n",
        "#     for i, (images, _) in enumerate(data_loader):\n",
        "#         images = images.reshape(batch_size, -1)\n",
        "\n",
        "#         real_labels = torch.ones(batch_size, 1)\n",
        "#         fake_labels = torch.zeros(batch_size, 1)\n",
        "\n",
        "#         outputs = D(images)\n",
        "#         d_loss_real = criterion(outputs, real_labels)\n",
        "#         real_score = outputs \n",
        "\n",
        "#         z = torch.randn(batch_size, latent_size)\n",
        "#         fake_images = G(z)\n",
        "#         outputs = D(fake_images)\n",
        "#         d_loss_fake = criterion(outputs, fake_labels)\n",
        "#         fake_score = outputs \n",
        "\n",
        "#         d_loss = d_loss_real + d_loss_fake \n",
        "#         reset_grad()\n",
        "#         d_loss.backward()\n",
        "#         d_optimizer.step()\n",
        "\n",
        "\n",
        "#         # train generator \n",
        "\n",
        "#         z = torch.randn(batch_size, latent_size)\n",
        "#         fake_images = G(z)\n",
        "#         outputs = D(fake_images)\n",
        "\n",
        "#         g_loss = criterion(outputs, real_labels)\n",
        "\n",
        "#         reset_grad()\n",
        "#         g_loss.backward()\n",
        "#         g_optimizer.step()\n",
        "\n",
        "#         if (i+1) % 200 == 0:\n",
        "#             print('Epoch [{}/{}], Step [{}/{}], d_loss: {:.4f}, D(x): {:.2f}, D(G(z)): {:.2f}'\n",
        "#                 .format(epoch, num_epochs, i+1, total_step, d_loss.item(), g_loss.item(), \n",
        "#                     real_score.mean().item(), fake_score.mean().item()))\n",
        "\n",
        "#     if (epoch+1) == 1:\n",
        "#         images = images.reshape(images.size(0), 1, 28, 28)\n",
        "#         save_image(denorm(images), os.path.join(sample_dir, 'real_images.png'))\n",
        "\n",
        "#     fake_images = fake_images.reshape(fake_images.size(0), 1, 28, 28)\n",
        "#     save_image(denorm(fake_images), os.path.join(sample_dir, 'fake_images-{}.png'.format(epoch+1)))\n",
        "for epoch in range(num_epochs):\n",
        "    for i, (images, _) in enumerate(data_loader):\n",
        "        images = images.reshape(batch_size, -1).to(device)\n",
        "        \n",
        "        # Create the labels which are later used as input for the BCE loss\n",
        "        real_labels = torch.ones(batch_size, 1).to(device)\n",
        "        fake_labels = torch.zeros(batch_size, 1).to(device)\n",
        "\n",
        "        # ================================================================== #\n",
        "        #                      Train the discriminator                       #\n",
        "        # ================================================================== #\n",
        "\n",
        "        # Compute BCE_Loss using real images where BCE_Loss(x, y): - y * log(D(x)) - (1-y) * log(1 - D(x))\n",
        "        # Second term of the loss is always zero since real_labels == 1\n",
        "        outputs = D(images)\n",
        "        d_loss_real = criterion(outputs, real_labels)\n",
        "        real_score = outputs\n",
        "        \n",
        "        # Compute BCELoss using fake images\n",
        "        # First term of the loss is always zero since fake_labels == 0\n",
        "        z = torch.randn(batch_size, latent_size).to(device)\n",
        "        fake_images = G(z)\n",
        "        outputs = D(fake_images)\n",
        "        d_loss_fake = criterion(outputs, fake_labels)\n",
        "        fake_score = outputs\n",
        "        \n",
        "        # Backprop and optimize\n",
        "        d_loss = d_loss_real + d_loss_fake\n",
        "        reset_grad()\n",
        "        d_loss.backward()\n",
        "        d_optimizer.step()\n",
        "        \n",
        "        # ================================================================== #\n",
        "        #                        Train the generator                         #\n",
        "        # ================================================================== #\n",
        "\n",
        "        # Compute loss with fake images\n",
        "        z = torch.randn(batch_size, latent_size).to(device)\n",
        "        fake_images = G(z)\n",
        "        outputs = D(fake_images)\n",
        "        \n",
        "        # We train G to maximize log(D(G(z)) instead of minimizing log(1-D(G(z)))\n",
        "        # For the reason, see the last paragraph of section 3. https://arxiv.org/pdf/1406.2661.pdf\n",
        "        g_loss = criterion(outputs, real_labels)\n",
        "        \n",
        "        # Backprop and optimize\n",
        "        reset_grad()\n",
        "        g_loss.backward()\n",
        "        g_optimizer.step()\n",
        "        \n",
        "        if (i+1) % 200 == 0:\n",
        "            print('Epoch [{}/{}], Step [{}/{}], d_loss: {:.4f}, g_loss: {:.4f}, D(x): {:.2f}, D(G(z)): {:.2f}' \n",
        "                  .format(epoch, num_epochs, i+1, total_step, d_loss.item(), g_loss.item(), \n",
        "                          real_score.mean().item(), fake_score.mean().item()))\n",
        "    \n",
        "    # Save real images\n",
        "    if (epoch+1) == 1:\n",
        "        images = images.reshape(images.size(0), 1, 28, 28)\n",
        "        save_image(denorm(images), os.path.join(sample_dir, 'real_images.png'))\n",
        "    \n",
        "    # Save sampled images\n",
        "    fake_images = fake_images.reshape(fake_images.size(0), 1, 28, 28)\n",
        "    save_image(denorm(fake_images), os.path.join(sample_dir, 'fake_images-{}.png'.format(epoch+1)))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "RuntimeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-65-9ca17794f91d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     47\u001b[0m \u001b[0;31m#     save_image(denorm(fake_images), os.path.join(sample_dir, 'fake_images-{}.png'.format(epoch+1)))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     48\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mepoch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_epochs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m     \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mimages\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_loader\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     50\u001b[0m         \u001b[0mimages\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mimages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     51\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    344\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__next__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    345\u001b[0m         \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# may raise StopIteration\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 346\u001b[0;31m         \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset_fetcher\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfetch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# may raise StopIteration\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    347\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpin_memory\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    348\u001b[0m             \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_utils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpin_memory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpin_memory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py\u001b[0m in \u001b[0;36mfetch\u001b[0;34m(self, possibly_batched_index)\u001b[0m\n\u001b[1;32m     42\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mfetch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     43\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_collation\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m             \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0midx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     45\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     46\u001b[0m             \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m     42\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mfetch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     43\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_collation\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m             \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0midx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     45\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     46\u001b[0m             \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpossibly_batched_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torchvision/datasets/mnist.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, index)\u001b[0m\n\u001b[1;32m     93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 95\u001b[0;31m             \u001b[0mimg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     97\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtarget_transform\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torchvision/transforms/transforms.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, img)\u001b[0m\n\u001b[1;32m     59\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mimg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     60\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransforms\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m             \u001b[0mimg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     62\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mimg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torchvision/transforms/transforms.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, tensor)\u001b[0m\n\u001b[1;32m    164\u001b[0m             \u001b[0mTensor\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mNormalized\u001b[0m \u001b[0mTensor\u001b[0m \u001b[0mimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    165\u001b[0m         \"\"\"\n\u001b[0;32m--> 166\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minplace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    167\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    168\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__repr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torchvision/transforms/functional.py\u001b[0m in \u001b[0;36mnormalize\u001b[0;34m(tensor, mean, std, inplace)\u001b[0m\n\u001b[1;32m    215\u001b[0m     \u001b[0mmean\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    216\u001b[0m     \u001b[0mstd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 217\u001b[0;31m     \u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msub_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdiv_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstd\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    218\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mtensor\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    219\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mRuntimeError\u001b[0m: output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "syF8ExlRG-OX",
        "colab_type": "text"
      },
      "source": [
        "# 5 "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "MGo7yDrOGQet",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import os \n",
        "import torch \n",
        "import torch.nn as nn \n",
        "import torch.nn.functional as F \n",
        "import torchvision \n",
        "from torchvision import transforms \n",
        "from torchvision.utils import save_image "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vYhSEsaNHhKh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "image_size = 784 \n",
        "h_dim = 400 \n",
        "z_dim = 20 \n",
        "num_epochs = 15 \n",
        "batch_size = 128 \n",
        "learning_rate = 1e-3 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Lk9JM_rtHzbl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)\n",
        "\n",
        "data_loader = torch.utils.data.DataLoader(dataset=dataset, batch_size=batch_size, shuffle=True)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "alu1y7vvIUKV",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class VAE(nn.Module):\n",
        "    def __init__(self, image_size=784, h_dim=400, z_dim=20):\n",
        "        super(VAE, self).__init__()\n",
        "        self.fc1 = nn.Linear(image_size, h_dim)\n",
        "        self.fc2 = nn.Linear(h_dim, z_dim)\n",
        "        self.fc3 = nn.Linear(h_dim, z_dim)\n",
        "        self.fc4 = nn.Linear(z_dim, h_dim)\n",
        "        self.fc5 = nn.Linear(h_dim, image_size)\n",
        "\n",
        "    def encode(self, x):\n",
        "        h = F.relu(self.fc1(x))\n",
        "        return self.fc2(h), self.fc3(h)\n",
        "\n",
        "    def reparameterize(self, mu, log_var):\n",
        "        std = torch.exp(log_var/2)\n",
        "        eps = torch.randn_like(std)\n",
        "        return mu + eps * std \n",
        "\n",
        "    def decode(self, z):\n",
        "        h = F.relu(self.fc4(z))\n",
        "        return F.sigmoid(self.fc5(h))\n",
        "\n",
        "    def forward(self, x):\n",
        "        mu, log_var = self.encode(x)\n",
        "        z = self.reparameterize(mu, log_var)\n",
        "        x_reconst = self.decode(z)\n",
        "        return x_reconst, mu, log_var"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lXIjSl0UM7aq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = VAE()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XaZFqObrNgxP",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7_JpWnjeNnvv",
        "colab_type": "code",
        "outputId": "7fd24403-49ed-49b0-8886-bf18bf22e78c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    for i, (x, _) in enumerate(data_loader):\n",
        "        x = x.view(-1, image_size)\n",
        "        x_reconst, mu, log_var = model(x)\n",
        "\n",
        "        reconst_loss = F.binary_cross_entropy(x_reconst, x, size_average=False)\n",
        "        kl_div = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())\n",
        "\n",
        "        loss = reconst_loss + kl_div \n",
        "        optimizer.zero_grad()\n",
        "        loss.backward()\n",
        "        optimizer.step()\n",
        "\n",
        "        if (i+1) % 10 == 0:\n",
        "            print('Epoch [{}/{}], Step [{}/{}], Reconst Loss: {:.4f}, KL Div: {:.4f}'\n",
        "                .format(epoch+1, num_epochs, i+1, len(data_loader), reconst_loss.item(), kl_div.item()))\n",
        "\n",
        "    with torch.no_grad():\n",
        "        z = torch.randn(batch_size, z_dim)\n",
        "        out = model.decode(z).view(-1, 1, 28, 28)\n",
        "        save_image(out, os.path.join(sample_dir, 'sampled-{}.png'.format(epoch+1)))\n",
        "\n",
        "        out, _, _ = model(x)\n",
        "        x_concat = torch.cat([x.view(-1, 1, 28, 28), out.view(-1, 1, 28, 28)], dim=3)\n",
        "        save_image(x_concat, os.path.join(sample_dir, 'reconst-{}.png'.format(epoch+1)))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py:1350: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n",
            "  warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\n",
            "/usr/local/lib/python3.6/dist-packages/torch/nn/_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
            "  warnings.warn(warning.format(ret))\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Epoch [1/15], Step [10/469], Reconst Loss: 14143.3359, KL Div: 2709.1008\n",
            "Epoch [1/15], Step [20/469], Reconst Loss: 13410.0645, KL Div: 2655.5310\n",
            "Epoch [1/15], Step [30/469], Reconst Loss: 13167.0615, KL Div: 2742.2844\n",
            "Epoch [1/15], Step [40/469], Reconst Loss: 13742.1484, KL Div: 2759.3984\n",
            "Epoch [1/15], Step [50/469], Reconst Loss: 13679.2109, KL Div: 2753.9487\n",
            "Epoch [1/15], Step [60/469], Reconst Loss: 13105.2725, KL Div: 2820.8018\n",
            "Epoch [1/15], Step [70/469], Reconst Loss: 13143.0830, KL Div: 2680.2004\n",
            "Epoch [1/15], Step [80/469], Reconst Loss: 14036.1504, KL Div: 2727.3857\n",
            "Epoch [1/15], Step [90/469], Reconst Loss: 13381.2168, KL Div: 2876.7642\n",
            "Epoch [1/15], Step [100/469], Reconst Loss: 13293.8623, KL Div: 2779.4324\n",
            "Epoch [1/15], Step [110/469], Reconst Loss: 13604.4346, KL Div: 2755.4458\n",
            "Epoch [1/15], Step [120/469], Reconst Loss: 12785.6367, KL Div: 2793.2695\n",
            "Epoch [1/15], Step [130/469], Reconst Loss: 12676.8623, KL Div: 3005.2170\n",
            "Epoch [1/15], Step [140/469], Reconst Loss: 12916.3174, KL Div: 2874.3105\n",
            "Epoch [1/15], Step [150/469], Reconst Loss: 13794.4121, KL Div: 2886.5022\n",
            "Epoch [1/15], Step [160/469], Reconst Loss: 12460.3203, KL Div: 3012.3904\n",
            "Epoch [1/15], Step [170/469], Reconst Loss: 12476.4443, KL Div: 2817.5671\n",
            "Epoch [1/15], Step [180/469], Reconst Loss: 12096.3223, KL Div: 2891.1287\n",
            "Epoch [1/15], Step [190/469], Reconst Loss: 13394.0459, KL Div: 2866.1663\n",
            "Epoch [1/15], Step [200/469], Reconst Loss: 12595.0430, KL Div: 2943.5027\n",
            "Epoch [1/15], Step [210/469], Reconst Loss: 12488.7598, KL Div: 2836.9995\n",
            "Epoch [1/15], Step [220/469], Reconst Loss: 11831.7969, KL Div: 2789.0469\n",
            "Epoch [1/15], Step [230/469], Reconst Loss: 12752.4902, KL Div: 2895.8535\n",
            "Epoch [1/15], Step [240/469], Reconst Loss: 11964.7549, KL Div: 2984.6885\n",
            "Epoch [1/15], Step [250/469], Reconst Loss: 12198.7217, KL Div: 3035.5139\n",
            "Epoch [1/15], Step [260/469], Reconst Loss: 12917.7168, KL Div: 2977.6499\n",
            "Epoch [1/15], Step [270/469], Reconst Loss: 12301.9297, KL Div: 2881.0127\n",
            "Epoch [1/15], Step [280/469], Reconst Loss: 12240.0820, KL Div: 3017.9666\n",
            "Epoch [1/15], Step [290/469], Reconst Loss: 12716.1201, KL Div: 3056.2671\n",
            "Epoch [1/15], Step [300/469], Reconst Loss: 12243.9150, KL Div: 2936.3086\n",
            "Epoch [1/15], Step [310/469], Reconst Loss: 12240.1865, KL Div: 3025.5667\n",
            "Epoch [1/15], Step [320/469], Reconst Loss: 12188.8486, KL Div: 2874.0420\n",
            "Epoch [1/15], Step [330/469], Reconst Loss: 12325.6777, KL Div: 2994.4683\n",
            "Epoch [1/15], Step [340/469], Reconst Loss: 12413.6426, KL Div: 2918.0923\n",
            "Epoch [1/15], Step [350/469], Reconst Loss: 12228.1074, KL Div: 2837.6292\n",
            "Epoch [1/15], Step [360/469], Reconst Loss: 12178.6416, KL Div: 2991.9358\n",
            "Epoch [1/15], Step [370/469], Reconst Loss: 12261.4473, KL Div: 2968.4792\n",
            "Epoch [1/15], Step [380/469], Reconst Loss: 11898.3281, KL Div: 3025.7629\n",
            "Epoch [1/15], Step [390/469], Reconst Loss: 11975.7061, KL Div: 2872.9238\n",
            "Epoch [1/15], Step [400/469], Reconst Loss: 12503.2500, KL Div: 3091.0161\n",
            "Epoch [1/15], Step [410/469], Reconst Loss: 11765.6494, KL Div: 2977.7944\n",
            "Epoch [1/15], Step [420/469], Reconst Loss: 12170.5889, KL Div: 2987.5107\n",
            "Epoch [1/15], Step [430/469], Reconst Loss: 12499.5049, KL Div: 3028.3464\n",
            "Epoch [1/15], Step [440/469], Reconst Loss: 12657.3818, KL Div: 3096.5500\n",
            "Epoch [1/15], Step [450/469], Reconst Loss: 12014.3867, KL Div: 3145.1841\n",
            "Epoch [1/15], Step [460/469], Reconst Loss: 11942.1670, KL Div: 3005.0093\n",
            "Epoch [2/15], Step [10/469], Reconst Loss: 12027.2061, KL Div: 3062.2375\n",
            "Epoch [2/15], Step [20/469], Reconst Loss: 12207.5156, KL Div: 2920.3240\n",
            "Epoch [2/15], Step [30/469], Reconst Loss: 11895.2822, KL Div: 3198.9041\n",
            "Epoch [2/15], Step [40/469], Reconst Loss: 12057.9131, KL Div: 3100.0667\n",
            "Epoch [2/15], Step [50/469], Reconst Loss: 11722.0078, KL Div: 3105.5583\n",
            "Epoch [2/15], Step [60/469], Reconst Loss: 12016.3691, KL Div: 2965.7432\n",
            "Epoch [2/15], Step [70/469], Reconst Loss: 11082.7207, KL Div: 3166.5181\n",
            "Epoch [2/15], Step [80/469], Reconst Loss: 11932.6045, KL Div: 3208.1665\n",
            "Epoch [2/15], Step [90/469], Reconst Loss: 11652.4863, KL Div: 3035.3411\n",
            "Epoch [2/15], Step [100/469], Reconst Loss: 11466.8164, KL Div: 3023.2500\n",
            "Epoch [2/15], Step [110/469], Reconst Loss: 11341.4443, KL Div: 3082.6587\n",
            "Epoch [2/15], Step [120/469], Reconst Loss: 11607.5264, KL Div: 3057.7805\n",
            "Epoch [2/15], Step [130/469], Reconst Loss: 12121.8301, KL Div: 2999.7576\n",
            "Epoch [2/15], Step [140/469], Reconst Loss: 11454.3828, KL Div: 3244.1091\n",
            "Epoch [2/15], Step [150/469], Reconst Loss: 12237.3135, KL Div: 3103.0405\n",
            "Epoch [2/15], Step [160/469], Reconst Loss: 11468.2383, KL Div: 3145.9512\n",
            "Epoch [2/15], Step [170/469], Reconst Loss: 11873.7422, KL Div: 3000.9436\n",
            "Epoch [2/15], Step [180/469], Reconst Loss: 11525.3047, KL Div: 3116.5027\n",
            "Epoch [2/15], Step [190/469], Reconst Loss: 11740.1875, KL Div: 3019.7639\n",
            "Epoch [2/15], Step [200/469], Reconst Loss: 11973.0537, KL Div: 3144.4324\n",
            "Epoch [2/15], Step [210/469], Reconst Loss: 11542.6738, KL Div: 3153.2666\n",
            "Epoch [2/15], Step [220/469], Reconst Loss: 11229.8428, KL Div: 3147.1494\n",
            "Epoch [2/15], Step [230/469], Reconst Loss: 11283.1035, KL Div: 3150.3457\n",
            "Epoch [2/15], Step [240/469], Reconst Loss: 11668.8730, KL Div: 3067.3420\n",
            "Epoch [2/15], Step [250/469], Reconst Loss: 11349.7676, KL Div: 3108.8562\n",
            "Epoch [2/15], Step [260/469], Reconst Loss: 11466.4609, KL Div: 3106.9219\n",
            "Epoch [2/15], Step [270/469], Reconst Loss: 11601.4502, KL Div: 3061.5298\n",
            "Epoch [2/15], Step [280/469], Reconst Loss: 11742.2070, KL Div: 3105.0742\n",
            "Epoch [2/15], Step [290/469], Reconst Loss: 11073.7324, KL Div: 3119.1533\n",
            "Epoch [2/15], Step [300/469], Reconst Loss: 11346.6523, KL Div: 3187.5579\n",
            "Epoch [2/15], Step [310/469], Reconst Loss: 11562.8926, KL Div: 3205.2344\n",
            "Epoch [2/15], Step [320/469], Reconst Loss: 11505.6963, KL Div: 3078.3274\n",
            "Epoch [2/15], Step [330/469], Reconst Loss: 11366.2676, KL Div: 3196.8066\n",
            "Epoch [2/15], Step [340/469], Reconst Loss: 11605.0566, KL Div: 2998.1626\n",
            "Epoch [2/15], Step [350/469], Reconst Loss: 11540.3955, KL Div: 3173.8411\n",
            "Epoch [2/15], Step [360/469], Reconst Loss: 11405.5303, KL Div: 3097.5366\n",
            "Epoch [2/15], Step [370/469], Reconst Loss: 11403.5234, KL Div: 3108.5466\n",
            "Epoch [2/15], Step [380/469], Reconst Loss: 11413.0977, KL Div: 3147.9741\n",
            "Epoch [2/15], Step [390/469], Reconst Loss: 11707.4180, KL Div: 3178.1670\n",
            "Epoch [2/15], Step [400/469], Reconst Loss: 11688.3906, KL Div: 3114.0000\n",
            "Epoch [2/15], Step [410/469], Reconst Loss: 11376.5000, KL Div: 3115.5542\n",
            "Epoch [2/15], Step [420/469], Reconst Loss: 11398.9404, KL Div: 3076.2395\n",
            "Epoch [2/15], Step [430/469], Reconst Loss: 10703.2344, KL Div: 3026.6626\n",
            "Epoch [2/15], Step [440/469], Reconst Loss: 10783.3418, KL Div: 3055.1887\n",
            "Epoch [2/15], Step [450/469], Reconst Loss: 11457.3916, KL Div: 3184.6631\n",
            "Epoch [2/15], Step [460/469], Reconst Loss: 10940.2559, KL Div: 3088.7766\n",
            "Epoch [3/15], Step [10/469], Reconst Loss: 11254.7607, KL Div: 3237.7129\n",
            "Epoch [3/15], Step [20/469], Reconst Loss: 11183.3545, KL Div: 3215.3989\n",
            "Epoch [3/15], Step [30/469], Reconst Loss: 11166.1973, KL Div: 3130.5515\n",
            "Epoch [3/15], Step [40/469], Reconst Loss: 10842.0576, KL Div: 3067.0381\n",
            "Epoch [3/15], Step [50/469], Reconst Loss: 10931.9072, KL Div: 3132.9031\n",
            "Epoch [3/15], Step [60/469], Reconst Loss: 11082.7148, KL Div: 3154.4280\n",
            "Epoch [3/15], Step [70/469], Reconst Loss: 10896.8926, KL Div: 3169.2974\n",
            "Epoch [3/15], Step [80/469], Reconst Loss: 11307.9932, KL Div: 3155.3867\n",
            "Epoch [3/15], Step [90/469], Reconst Loss: 11044.8154, KL Div: 3075.4062\n",
            "Epoch [3/15], Step [100/469], Reconst Loss: 11680.6367, KL Div: 3207.3230\n",
            "Epoch [3/15], Step [110/469], Reconst Loss: 10546.6846, KL Div: 3133.7739\n",
            "Epoch [3/15], Step [120/469], Reconst Loss: 11095.6211, KL Div: 3244.0632\n",
            "Epoch [3/15], Step [130/469], Reconst Loss: 11241.9336, KL Div: 3200.8093\n",
            "Epoch [3/15], Step [140/469], Reconst Loss: 11456.7188, KL Div: 3149.6689\n",
            "Epoch [3/15], Step [150/469], Reconst Loss: 11632.9023, KL Div: 3137.6594\n",
            "Epoch [3/15], Step [160/469], Reconst Loss: 10934.3281, KL Div: 3181.0642\n",
            "Epoch [3/15], Step [170/469], Reconst Loss: 11143.4160, KL Div: 3210.6497\n",
            "Epoch [3/15], Step [180/469], Reconst Loss: 11617.1758, KL Div: 3291.7944\n",
            "Epoch [3/15], Step [190/469], Reconst Loss: 11007.6768, KL Div: 3150.6182\n",
            "Epoch [3/15], Step [200/469], Reconst Loss: 11343.2529, KL Div: 3219.3691\n",
            "Epoch [3/15], Step [210/469], Reconst Loss: 11240.9219, KL Div: 3192.0735\n",
            "Epoch [3/15], Step [220/469], Reconst Loss: 10728.7920, KL Div: 3163.3701\n",
            "Epoch [3/15], Step [230/469], Reconst Loss: 11043.6523, KL Div: 3214.2944\n",
            "Epoch [3/15], Step [240/469], Reconst Loss: 11232.7402, KL Div: 3255.1204\n",
            "Epoch [3/15], Step [250/469], Reconst Loss: 11174.6201, KL Div: 3145.6987\n",
            "Epoch [3/15], Step [260/469], Reconst Loss: 11239.0889, KL Div: 3141.9060\n",
            "Epoch [3/15], Step [270/469], Reconst Loss: 10513.4170, KL Div: 3196.5935\n",
            "Epoch [3/15], Step [280/469], Reconst Loss: 10862.7520, KL Div: 3184.9404\n",
            "Epoch [3/15], Step [290/469], Reconst Loss: 11586.4629, KL Div: 3193.1921\n",
            "Epoch [3/15], Step [300/469], Reconst Loss: 11264.8604, KL Div: 3213.1492\n",
            "Epoch [3/15], Step [310/469], Reconst Loss: 11165.3301, KL Div: 3183.3743\n",
            "Epoch [3/15], Step [320/469], Reconst Loss: 11286.9131, KL Div: 3183.6187\n",
            "Epoch [3/15], Step [330/469], Reconst Loss: 11291.4531, KL Div: 3236.8225\n",
            "Epoch [3/15], Step [340/469], Reconst Loss: 11547.5537, KL Div: 3221.6572\n",
            "Epoch [3/15], Step [350/469], Reconst Loss: 11213.8652, KL Div: 3189.7461\n",
            "Epoch [3/15], Step [360/469], Reconst Loss: 10848.0166, KL Div: 3110.1709\n",
            "Epoch [3/15], Step [370/469], Reconst Loss: 10174.4043, KL Div: 3086.8198\n",
            "Epoch [3/15], Step [380/469], Reconst Loss: 10849.5967, KL Div: 3150.6006\n",
            "Epoch [3/15], Step [390/469], Reconst Loss: 10863.7295, KL Div: 3204.0938\n",
            "Epoch [3/15], Step [400/469], Reconst Loss: 10799.7041, KL Div: 3075.6726\n",
            "Epoch [3/15], Step [410/469], Reconst Loss: 10887.2861, KL Div: 3158.6707\n",
            "Epoch [3/15], Step [420/469], Reconst Loss: 10867.9277, KL Div: 3203.1116\n",
            "Epoch [3/15], Step [430/469], Reconst Loss: 10823.3848, KL Div: 3013.5190\n",
            "Epoch [3/15], Step [440/469], Reconst Loss: 11051.3193, KL Div: 3212.3103\n",
            "Epoch [3/15], Step [450/469], Reconst Loss: 11408.7344, KL Div: 3241.5642\n",
            "Epoch [3/15], Step [460/469], Reconst Loss: 11233.5156, KL Div: 3113.0457\n",
            "Epoch [4/15], Step [10/469], Reconst Loss: 10795.2012, KL Div: 3185.2932\n",
            "Epoch [4/15], Step [20/469], Reconst Loss: 11390.1768, KL Div: 3211.1904\n",
            "Epoch [4/15], Step [30/469], Reconst Loss: 11540.1943, KL Div: 3306.3645\n",
            "Epoch [4/15], Step [40/469], Reconst Loss: 10999.2734, KL Div: 3152.3396\n",
            "Epoch [4/15], Step [50/469], Reconst Loss: 10756.6787, KL Div: 3151.1216\n",
            "Epoch [4/15], Step [60/469], Reconst Loss: 11057.5352, KL Div: 3223.1523\n",
            "Epoch [4/15], Step [70/469], Reconst Loss: 10875.5225, KL Div: 3217.4219\n",
            "Epoch [4/15], Step [80/469], Reconst Loss: 10880.4717, KL Div: 3200.3750\n",
            "Epoch [4/15], Step [90/469], Reconst Loss: 10988.7441, KL Div: 3215.6797\n",
            "Epoch [4/15], Step [100/469], Reconst Loss: 11356.8047, KL Div: 3205.8289\n",
            "Epoch [4/15], Step [110/469], Reconst Loss: 10719.3926, KL Div: 3114.6211\n",
            "Epoch [4/15], Step [120/469], Reconst Loss: 10720.8887, KL Div: 3136.4937\n",
            "Epoch [4/15], Step [130/469], Reconst Loss: 10690.4863, KL Div: 3360.0562\n",
            "Epoch [4/15], Step [140/469], Reconst Loss: 11229.3516, KL Div: 3222.4919\n",
            "Epoch [4/15], Step [150/469], Reconst Loss: 11195.2363, KL Div: 3236.8589\n",
            "Epoch [4/15], Step [160/469], Reconst Loss: 10427.3887, KL Div: 3093.7161\n",
            "Epoch [4/15], Step [170/469], Reconst Loss: 11178.0439, KL Div: 3199.2305\n",
            "Epoch [4/15], Step [180/469], Reconst Loss: 11058.7227, KL Div: 3176.3359\n",
            "Epoch [4/15], Step [190/469], Reconst Loss: 10774.5449, KL Div: 3229.2834\n",
            "Epoch [4/15], Step [200/469], Reconst Loss: 10796.7842, KL Div: 3222.1797\n",
            "Epoch [4/15], Step [210/469], Reconst Loss: 10462.6299, KL Div: 3235.5205\n",
            "Epoch [4/15], Step [220/469], Reconst Loss: 10497.4160, KL Div: 3148.9207\n",
            "Epoch [4/15], Step [230/469], Reconst Loss: 11066.0928, KL Div: 3289.3350\n",
            "Epoch [4/15], Step [240/469], Reconst Loss: 10973.9365, KL Div: 3104.9751\n",
            "Epoch [4/15], Step [250/469], Reconst Loss: 10861.2910, KL Div: 3263.9866\n",
            "Epoch [4/15], Step [260/469], Reconst Loss: 10784.5107, KL Div: 3205.3560\n",
            "Epoch [4/15], Step [270/469], Reconst Loss: 11111.0508, KL Div: 3193.3525\n",
            "Epoch [4/15], Step [280/469], Reconst Loss: 10915.2246, KL Div: 3125.0393\n",
            "Epoch [4/15], Step [290/469], Reconst Loss: 10891.1807, KL Div: 3302.6804\n",
            "Epoch [4/15], Step [300/469], Reconst Loss: 10821.0986, KL Div: 3067.1653\n",
            "Epoch [4/15], Step [310/469], Reconst Loss: 10958.6074, KL Div: 3260.2673\n",
            "Epoch [4/15], Step [320/469], Reconst Loss: 10874.3115, KL Div: 3210.1433\n",
            "Epoch [4/15], Step [330/469], Reconst Loss: 10902.7861, KL Div: 3122.1621\n",
            "Epoch [4/15], Step [340/469], Reconst Loss: 11081.6543, KL Div: 3331.6848\n",
            "Epoch [4/15], Step [350/469], Reconst Loss: 10942.5967, KL Div: 3228.7334\n",
            "Epoch [4/15], Step [360/469], Reconst Loss: 11108.9375, KL Div: 3229.9106\n",
            "Epoch [4/15], Step [370/469], Reconst Loss: 10995.5693, KL Div: 3222.9875\n",
            "Epoch [4/15], Step [380/469], Reconst Loss: 10874.1377, KL Div: 3219.1631\n",
            "Epoch [4/15], Step [390/469], Reconst Loss: 10766.7969, KL Div: 3393.5327\n",
            "Epoch [4/15], Step [400/469], Reconst Loss: 10761.4609, KL Div: 3134.0950\n",
            "Epoch [4/15], Step [410/469], Reconst Loss: 10640.9131, KL Div: 3255.5081\n",
            "Epoch [4/15], Step [420/469], Reconst Loss: 10428.7285, KL Div: 3174.7712\n",
            "Epoch [4/15], Step [430/469], Reconst Loss: 11055.6768, KL Div: 3382.7969\n",
            "Epoch [4/15], Step [440/469], Reconst Loss: 10745.7354, KL Div: 3132.8010\n",
            "Epoch [4/15], Step [450/469], Reconst Loss: 10887.3291, KL Div: 3227.4553\n",
            "Epoch [4/15], Step [460/469], Reconst Loss: 11333.7227, KL Div: 3189.7178\n",
            "Epoch [5/15], Step [10/469], Reconst Loss: 10546.1533, KL Div: 3218.0178\n",
            "Epoch [5/15], Step [20/469], Reconst Loss: 11131.3594, KL Div: 3340.2791\n",
            "Epoch [5/15], Step [30/469], Reconst Loss: 10749.8389, KL Div: 3184.1167\n",
            "Epoch [5/15], Step [40/469], Reconst Loss: 11039.2402, KL Div: 3163.7964\n",
            "Epoch [5/15], Step [50/469], Reconst Loss: 10960.1494, KL Div: 3304.3560\n",
            "Epoch [5/15], Step [60/469], Reconst Loss: 11040.6514, KL Div: 3205.9575\n",
            "Epoch [5/15], Step [70/469], Reconst Loss: 11377.0645, KL Div: 3226.5151\n",
            "Epoch [5/15], Step [80/469], Reconst Loss: 10646.3672, KL Div: 3179.3374\n",
            "Epoch [5/15], Step [90/469], Reconst Loss: 10819.3789, KL Div: 3233.2078\n",
            "Epoch [5/15], Step [100/469], Reconst Loss: 10735.4541, KL Div: 3186.2354\n",
            "Epoch [5/15], Step [110/469], Reconst Loss: 11287.7002, KL Div: 3245.9465\n",
            "Epoch [5/15], Step [120/469], Reconst Loss: 10622.7246, KL Div: 3212.0581\n",
            "Epoch [5/15], Step [130/469], Reconst Loss: 10871.4102, KL Div: 3141.5801\n",
            "Epoch [5/15], Step [140/469], Reconst Loss: 10499.3584, KL Div: 3233.8921\n",
            "Epoch [5/15], Step [150/469], Reconst Loss: 10859.2881, KL Div: 3036.9263\n",
            "Epoch [5/15], Step [160/469], Reconst Loss: 10515.4512, KL Div: 3151.9507\n",
            "Epoch [5/15], Step [170/469], Reconst Loss: 10075.5957, KL Div: 3067.1873\n",
            "Epoch [5/15], Step [180/469], Reconst Loss: 10473.1973, KL Div: 3315.2905\n",
            "Epoch [5/15], Step [190/469], Reconst Loss: 10858.9990, KL Div: 3140.2021\n",
            "Epoch [5/15], Step [200/469], Reconst Loss: 10304.5586, KL Div: 3159.8604\n",
            "Epoch [5/15], Step [210/469], Reconst Loss: 10843.5107, KL Div: 3324.9336\n",
            "Epoch [5/15], Step [220/469], Reconst Loss: 10567.2246, KL Div: 3143.5532\n",
            "Epoch [5/15], Step [230/469], Reconst Loss: 10698.1807, KL Div: 3223.4033\n",
            "Epoch [5/15], Step [240/469], Reconst Loss: 10581.4707, KL Div: 3140.5791\n",
            "Epoch [5/15], Step [250/469], Reconst Loss: 11053.6816, KL Div: 3310.3438\n",
            "Epoch [5/15], Step [260/469], Reconst Loss: 10826.0020, KL Div: 3257.6611\n",
            "Epoch [5/15], Step [270/469], Reconst Loss: 11171.2949, KL Div: 3241.9238\n",
            "Epoch [5/15], Step [280/469], Reconst Loss: 10722.8799, KL Div: 3272.9519\n",
            "Epoch [5/15], Step [290/469], Reconst Loss: 11168.8633, KL Div: 3144.5061\n",
            "Epoch [5/15], Step [300/469], Reconst Loss: 11133.5518, KL Div: 3358.1465\n",
            "Epoch [5/15], Step [310/469], Reconst Loss: 10277.8018, KL Div: 3144.5049\n",
            "Epoch [5/15], Step [320/469], Reconst Loss: 10460.6309, KL Div: 3167.4617\n",
            "Epoch [5/15], Step [330/469], Reconst Loss: 10610.6689, KL Div: 3280.6116\n",
            "Epoch [5/15], Step [340/469], Reconst Loss: 10942.0957, KL Div: 3347.7146\n",
            "Epoch [5/15], Step [350/469], Reconst Loss: 10579.0283, KL Div: 3218.6807\n",
            "Epoch [5/15], Step [360/469], Reconst Loss: 11086.0215, KL Div: 3295.5493\n",
            "Epoch [5/15], Step [370/469], Reconst Loss: 10661.7324, KL Div: 3231.3110\n",
            "Epoch [5/15], Step [380/469], Reconst Loss: 10501.9004, KL Div: 3103.7383\n",
            "Epoch [5/15], Step [390/469], Reconst Loss: 10487.5098, KL Div: 3204.0132\n",
            "Epoch [5/15], Step [400/469], Reconst Loss: 10516.0967, KL Div: 3152.0002\n",
            "Epoch [5/15], Step [410/469], Reconst Loss: 10907.4180, KL Div: 3253.9363\n",
            "Epoch [5/15], Step [420/469], Reconst Loss: 10410.5156, KL Div: 3231.9768\n",
            "Epoch [5/15], Step [430/469], Reconst Loss: 10892.7793, KL Div: 3233.5503\n",
            "Epoch [5/15], Step [440/469], Reconst Loss: 10204.1455, KL Div: 3293.7349\n",
            "Epoch [5/15], Step [450/469], Reconst Loss: 10895.6846, KL Div: 3135.2078\n",
            "Epoch [5/15], Step [460/469], Reconst Loss: 10488.7598, KL Div: 3287.1084\n",
            "Epoch [6/15], Step [10/469], Reconst Loss: 11094.7920, KL Div: 3282.3115\n",
            "Epoch [6/15], Step [20/469], Reconst Loss: 10363.8809, KL Div: 3196.0547\n",
            "Epoch [6/15], Step [30/469], Reconst Loss: 10822.6162, KL Div: 3287.0940\n",
            "Epoch [6/15], Step [40/469], Reconst Loss: 10541.5938, KL Div: 3239.3330\n",
            "Epoch [6/15], Step [50/469], Reconst Loss: 11085.9346, KL Div: 3299.7119\n",
            "Epoch [6/15], Step [60/469], Reconst Loss: 10332.7461, KL Div: 3209.8215\n",
            "Epoch [6/15], Step [70/469], Reconst Loss: 10374.8945, KL Div: 3273.7146\n",
            "Epoch [6/15], Step [80/469], Reconst Loss: 10398.7402, KL Div: 3204.3916\n",
            "Epoch [6/15], Step [90/469], Reconst Loss: 10589.0947, KL Div: 3258.3293\n",
            "Epoch [6/15], Step [100/469], Reconst Loss: 10007.9746, KL Div: 3205.3733\n",
            "Epoch [6/15], Step [110/469], Reconst Loss: 11147.5586, KL Div: 3191.4019\n",
            "Epoch [6/15], Step [120/469], Reconst Loss: 10769.9639, KL Div: 3328.7510\n",
            "Epoch [6/15], Step [130/469], Reconst Loss: 10411.8057, KL Div: 3214.2991\n",
            "Epoch [6/15], Step [140/469], Reconst Loss: 10624.7588, KL Div: 3097.3225\n",
            "Epoch [6/15], Step [150/469], Reconst Loss: 10617.9941, KL Div: 3390.6296\n",
            "Epoch [6/15], Step [160/469], Reconst Loss: 10538.6504, KL Div: 3119.6135\n",
            "Epoch [6/15], Step [170/469], Reconst Loss: 10570.1611, KL Div: 3153.2417\n",
            "Epoch [6/15], Step [180/469], Reconst Loss: 10793.4199, KL Div: 3342.9568\n",
            "Epoch [6/15], Step [190/469], Reconst Loss: 10726.8340, KL Div: 3201.2729\n",
            "Epoch [6/15], Step [200/469], Reconst Loss: 10496.9854, KL Div: 3292.5044\n",
            "Epoch [6/15], Step [210/469], Reconst Loss: 10295.9150, KL Div: 3161.7896\n",
            "Epoch [6/15], Step [220/469], Reconst Loss: 10690.8682, KL Div: 3241.6267\n",
            "Epoch [6/15], Step [230/469], Reconst Loss: 10310.4688, KL Div: 3172.7200\n",
            "Epoch [6/15], Step [240/469], Reconst Loss: 10405.7148, KL Div: 3320.6995\n",
            "Epoch [6/15], Step [250/469], Reconst Loss: 10490.6562, KL Div: 3293.2898\n",
            "Epoch [6/15], Step [260/469], Reconst Loss: 10772.9609, KL Div: 3130.0664\n",
            "Epoch [6/15], Step [270/469], Reconst Loss: 10794.5293, KL Div: 3248.7346\n",
            "Epoch [6/15], Step [280/469], Reconst Loss: 10691.2012, KL Div: 3307.6841\n",
            "Epoch [6/15], Step [290/469], Reconst Loss: 10364.2363, KL Div: 3178.8665\n",
            "Epoch [6/15], Step [300/469], Reconst Loss: 10693.5576, KL Div: 3322.0457\n",
            "Epoch [6/15], Step [310/469], Reconst Loss: 10646.0723, KL Div: 3143.7458\n",
            "Epoch [6/15], Step [320/469], Reconst Loss: 10653.6484, KL Div: 3256.5630\n",
            "Epoch [6/15], Step [330/469], Reconst Loss: 10554.4189, KL Div: 3152.0574\n",
            "Epoch [6/15], Step [340/469], Reconst Loss: 10397.8594, KL Div: 3219.6975\n",
            "Epoch [6/15], Step [350/469], Reconst Loss: 11180.8975, KL Div: 3233.9631\n",
            "Epoch [6/15], Step [360/469], Reconst Loss: 10444.6016, KL Div: 3137.5129\n",
            "Epoch [6/15], Step [370/469], Reconst Loss: 10491.3340, KL Div: 3276.6533\n",
            "Epoch [6/15], Step [380/469], Reconst Loss: 10420.3750, KL Div: 3246.7097\n",
            "Epoch [6/15], Step [390/469], Reconst Loss: 10361.1611, KL Div: 3303.1230\n",
            "Epoch [6/15], Step [400/469], Reconst Loss: 10264.4619, KL Div: 3216.1025\n",
            "Epoch [6/15], Step [410/469], Reconst Loss: 10858.9482, KL Div: 3358.1965\n",
            "Epoch [6/15], Step [420/469], Reconst Loss: 10785.1875, KL Div: 3253.0930\n",
            "Epoch [6/15], Step [430/469], Reconst Loss: 10187.0879, KL Div: 3231.4546\n",
            "Epoch [6/15], Step [440/469], Reconst Loss: 10489.4648, KL Div: 3356.4316\n",
            "Epoch [6/15], Step [450/469], Reconst Loss: 10528.0576, KL Div: 3086.3069\n",
            "Epoch [6/15], Step [460/469], Reconst Loss: 10557.4160, KL Div: 3266.5732\n",
            "Epoch [7/15], Step [10/469], Reconst Loss: 10587.5488, KL Div: 3347.4006\n",
            "Epoch [7/15], Step [20/469], Reconst Loss: 10360.4805, KL Div: 3223.7766\n",
            "Epoch [7/15], Step [30/469], Reconst Loss: 10648.9932, KL Div: 3315.6184\n",
            "Epoch [7/15], Step [40/469], Reconst Loss: 10151.2275, KL Div: 3205.1172\n",
            "Epoch [7/15], Step [50/469], Reconst Loss: 10615.3711, KL Div: 3261.9490\n",
            "Epoch [7/15], Step [60/469], Reconst Loss: 10616.0752, KL Div: 3268.1951\n",
            "Epoch [7/15], Step [70/469], Reconst Loss: 10862.5254, KL Div: 3305.8450\n",
            "Epoch [7/15], Step [80/469], Reconst Loss: 10487.4092, KL Div: 3213.5764\n",
            "Epoch [7/15], Step [90/469], Reconst Loss: 10600.6562, KL Div: 3283.3154\n",
            "Epoch [7/15], Step [100/469], Reconst Loss: 10748.1523, KL Div: 3204.6174\n",
            "Epoch [7/15], Step [110/469], Reconst Loss: 10363.5430, KL Div: 3203.5481\n",
            "Epoch [7/15], Step [120/469], Reconst Loss: 10373.4199, KL Div: 3215.6316\n",
            "Epoch [7/15], Step [130/469], Reconst Loss: 10498.2549, KL Div: 3243.7749\n",
            "Epoch [7/15], Step [140/469], Reconst Loss: 10432.0557, KL Div: 3172.6353\n",
            "Epoch [7/15], Step [150/469], Reconst Loss: 10263.0742, KL Div: 3326.2969\n",
            "Epoch [7/15], Step [160/469], Reconst Loss: 10303.1484, KL Div: 3342.6721\n",
            "Epoch [7/15], Step [170/469], Reconst Loss: 10769.2012, KL Div: 3235.5625\n",
            "Epoch [7/15], Step [180/469], Reconst Loss: 10956.3838, KL Div: 3240.9321\n",
            "Epoch [7/15], Step [190/469], Reconst Loss: 10079.6309, KL Div: 3199.8909\n",
            "Epoch [7/15], Step [200/469], Reconst Loss: 10982.6230, KL Div: 3275.2292\n",
            "Epoch [7/15], Step [210/469], Reconst Loss: 10806.3516, KL Div: 3190.2134\n",
            "Epoch [7/15], Step [220/469], Reconst Loss: 10275.1016, KL Div: 3195.8428\n",
            "Epoch [7/15], Step [230/469], Reconst Loss: 10216.3760, KL Div: 3114.8350\n",
            "Epoch [7/15], Step [240/469], Reconst Loss: 10657.1895, KL Div: 3244.5049\n",
            "Epoch [7/15], Step [250/469], Reconst Loss: 10784.8320, KL Div: 3405.4375\n",
            "Epoch [7/15], Step [260/469], Reconst Loss: 10404.8096, KL Div: 3145.5913\n",
            "Epoch [7/15], Step [270/469], Reconst Loss: 9844.7930, KL Div: 3236.1812\n",
            "Epoch [7/15], Step [280/469], Reconst Loss: 10724.5508, KL Div: 3248.4126\n",
            "Epoch [7/15], Step [290/469], Reconst Loss: 10252.4736, KL Div: 3181.1987\n",
            "Epoch [7/15], Step [300/469], Reconst Loss: 10405.1914, KL Div: 3175.3760\n",
            "Epoch [7/15], Step [310/469], Reconst Loss: 10583.1572, KL Div: 3304.0950\n",
            "Epoch [7/15], Step [320/469], Reconst Loss: 10635.6963, KL Div: 3253.7598\n",
            "Epoch [7/15], Step [330/469], Reconst Loss: 10756.7471, KL Div: 3283.4187\n",
            "Epoch [7/15], Step [340/469], Reconst Loss: 10767.8145, KL Div: 3190.6670\n",
            "Epoch [7/15], Step [350/469], Reconst Loss: 10194.6006, KL Div: 3202.1006\n",
            "Epoch [7/15], Step [360/469], Reconst Loss: 10561.5508, KL Div: 3254.6523\n",
            "Epoch [7/15], Step [370/469], Reconst Loss: 10595.8682, KL Div: 3232.0125\n",
            "Epoch [7/15], Step [380/469], Reconst Loss: 10097.7676, KL Div: 3168.9634\n",
            "Epoch [7/15], Step [390/469], Reconst Loss: 10457.2012, KL Div: 3314.9814\n",
            "Epoch [7/15], Step [400/469], Reconst Loss: 10451.6172, KL Div: 3291.9014\n",
            "Epoch [7/15], Step [410/469], Reconst Loss: 10900.5732, KL Div: 3264.4602\n",
            "Epoch [7/15], Step [420/469], Reconst Loss: 10512.3379, KL Div: 3229.9595\n",
            "Epoch [7/15], Step [430/469], Reconst Loss: 9847.2383, KL Div: 3278.5850\n",
            "Epoch [7/15], Step [440/469], Reconst Loss: 10259.8545, KL Div: 3248.1262\n",
            "Epoch [7/15], Step [450/469], Reconst Loss: 11091.6777, KL Div: 3305.1470\n",
            "Epoch [7/15], Step [460/469], Reconst Loss: 10356.5791, KL Div: 3269.1001\n",
            "Epoch [8/15], Step [10/469], Reconst Loss: 10311.6514, KL Div: 3130.2817\n",
            "Epoch [8/15], Step [20/469], Reconst Loss: 10265.4951, KL Div: 3209.3589\n",
            "Epoch [8/15], Step [30/469], Reconst Loss: 10374.3350, KL Div: 3263.2759\n",
            "Epoch [8/15], Step [40/469], Reconst Loss: 10746.8467, KL Div: 3123.2095\n",
            "Epoch [8/15], Step [50/469], Reconst Loss: 10462.0205, KL Div: 3247.1174\n",
            "Epoch [8/15], Step [60/469], Reconst Loss: 10643.1699, KL Div: 3240.5396\n",
            "Epoch [8/15], Step [70/469], Reconst Loss: 10466.9609, KL Div: 3245.1348\n",
            "Epoch [8/15], Step [80/469], Reconst Loss: 10267.5947, KL Div: 3200.0679\n",
            "Epoch [8/15], Step [90/469], Reconst Loss: 10564.7236, KL Div: 3383.0659\n",
            "Epoch [8/15], Step [100/469], Reconst Loss: 10777.3477, KL Div: 3255.6497\n",
            "Epoch [8/15], Step [110/469], Reconst Loss: 10013.4922, KL Div: 3283.4829\n",
            "Epoch [8/15], Step [120/469], Reconst Loss: 10373.4697, KL Div: 3133.0310\n",
            "Epoch [8/15], Step [130/469], Reconst Loss: 10366.7168, KL Div: 3290.2800\n",
            "Epoch [8/15], Step [140/469], Reconst Loss: 10473.3730, KL Div: 3367.6746\n",
            "Epoch [8/15], Step [150/469], Reconst Loss: 11038.5879, KL Div: 3219.9297\n",
            "Epoch [8/15], Step [160/469], Reconst Loss: 10228.4678, KL Div: 3270.6931\n",
            "Epoch [8/15], Step [170/469], Reconst Loss: 9850.3076, KL Div: 3143.1458\n",
            "Epoch [8/15], Step [180/469], Reconst Loss: 10556.1904, KL Div: 3220.8838\n",
            "Epoch [8/15], Step [190/469], Reconst Loss: 10043.4580, KL Div: 3185.3811\n",
            "Epoch [8/15], Step [200/469], Reconst Loss: 9914.7559, KL Div: 3349.0537\n",
            "Epoch [8/15], Step [210/469], Reconst Loss: 10386.0283, KL Div: 3145.3291\n",
            "Epoch [8/15], Step [220/469], Reconst Loss: 10047.0449, KL Div: 3267.8604\n",
            "Epoch [8/15], Step [230/469], Reconst Loss: 10791.7373, KL Div: 3256.2461\n",
            "Epoch [8/15], Step [240/469], Reconst Loss: 10337.0430, KL Div: 3184.4949\n",
            "Epoch [8/15], Step [250/469], Reconst Loss: 10573.6514, KL Div: 3272.6880\n",
            "Epoch [8/15], Step [260/469], Reconst Loss: 10346.1016, KL Div: 3164.2517\n",
            "Epoch [8/15], Step [270/469], Reconst Loss: 10757.7041, KL Div: 3374.2996\n",
            "Epoch [8/15], Step [280/469], Reconst Loss: 10982.0801, KL Div: 3335.2510\n",
            "Epoch [8/15], Step [290/469], Reconst Loss: 10807.6641, KL Div: 3235.3179\n",
            "Epoch [8/15], Step [300/469], Reconst Loss: 10683.8164, KL Div: 3217.9148\n",
            "Epoch [8/15], Step [310/469], Reconst Loss: 10160.9727, KL Div: 3236.1440\n",
            "Epoch [8/15], Step [320/469], Reconst Loss: 9962.5127, KL Div: 3265.3403\n",
            "Epoch [8/15], Step [330/469], Reconst Loss: 10482.1113, KL Div: 3161.7783\n",
            "Epoch [8/15], Step [340/469], Reconst Loss: 10247.6045, KL Div: 3313.5168\n",
            "Epoch [8/15], Step [350/469], Reconst Loss: 10258.8711, KL Div: 3195.2380\n",
            "Epoch [8/15], Step [360/469], Reconst Loss: 10302.2256, KL Div: 3135.2715\n",
            "Epoch [8/15], Step [370/469], Reconst Loss: 10374.2793, KL Div: 3225.3745\n",
            "Epoch [8/15], Step [380/469], Reconst Loss: 10547.9590, KL Div: 3295.0938\n",
            "Epoch [8/15], Step [390/469], Reconst Loss: 10243.3613, KL Div: 3295.4202\n",
            "Epoch [8/15], Step [400/469], Reconst Loss: 10503.2529, KL Div: 3277.9375\n",
            "Epoch [8/15], Step [410/469], Reconst Loss: 10058.2285, KL Div: 3170.4207\n",
            "Epoch [8/15], Step [420/469], Reconst Loss: 10219.5693, KL Div: 3217.6375\n",
            "Epoch [8/15], Step [430/469], Reconst Loss: 10139.1543, KL Div: 3215.7703\n",
            "Epoch [8/15], Step [440/469], Reconst Loss: 10262.7578, KL Div: 3292.3098\n",
            "Epoch [8/15], Step [450/469], Reconst Loss: 10004.4209, KL Div: 3240.1384\n",
            "Epoch [8/15], Step [460/469], Reconst Loss: 10351.2832, KL Div: 3189.6387\n",
            "Epoch [9/15], Step [10/469], Reconst Loss: 10678.3193, KL Div: 3310.1841\n",
            "Epoch [9/15], Step [20/469], Reconst Loss: 10641.0117, KL Div: 3178.0552\n",
            "Epoch [9/15], Step [30/469], Reconst Loss: 10046.9678, KL Div: 3243.8992\n",
            "Epoch [9/15], Step [40/469], Reconst Loss: 10275.5459, KL Div: 3215.6296\n",
            "Epoch [9/15], Step [50/469], Reconst Loss: 10902.5332, KL Div: 3264.4929\n",
            "Epoch [9/15], Step [60/469], Reconst Loss: 10957.0342, KL Div: 3207.7314\n",
            "Epoch [9/15], Step [70/469], Reconst Loss: 10511.3838, KL Div: 3359.7632\n",
            "Epoch [9/15], Step [80/469], Reconst Loss: 10103.8828, KL Div: 3293.1323\n",
            "Epoch [9/15], Step [90/469], Reconst Loss: 10446.1592, KL Div: 3230.1594\n",
            "Epoch [9/15], Step [100/469], Reconst Loss: 10227.2354, KL Div: 3303.4207\n",
            "Epoch [9/15], Step [110/469], Reconst Loss: 10518.1191, KL Div: 3256.1724\n",
            "Epoch [9/15], Step [120/469], Reconst Loss: 10721.7422, KL Div: 3398.5359\n",
            "Epoch [9/15], Step [130/469], Reconst Loss: 10384.6455, KL Div: 3297.3809\n",
            "Epoch [9/15], Step [140/469], Reconst Loss: 10424.2900, KL Div: 3196.0725\n",
            "Epoch [9/15], Step [150/469], Reconst Loss: 9774.0371, KL Div: 3167.8584\n",
            "Epoch [9/15], Step [160/469], Reconst Loss: 10618.2051, KL Div: 3233.1929\n",
            "Epoch [9/15], Step [170/469], Reconst Loss: 10690.6885, KL Div: 3248.5266\n",
            "Epoch [9/15], Step [180/469], Reconst Loss: 10314.8828, KL Div: 3288.2129\n",
            "Epoch [9/15], Step [190/469], Reconst Loss: 10498.1406, KL Div: 3210.2573\n",
            "Epoch [9/15], Step [200/469], Reconst Loss: 10389.2920, KL Div: 3272.1306\n",
            "Epoch [9/15], Step [210/469], Reconst Loss: 10050.0918, KL Div: 3235.3958\n",
            "Epoch [9/15], Step [220/469], Reconst Loss: 10846.0859, KL Div: 3264.0652\n",
            "Epoch [9/15], Step [230/469], Reconst Loss: 10098.0625, KL Div: 3239.5586\n",
            "Epoch [9/15], Step [240/469], Reconst Loss: 10323.0928, KL Div: 3305.0874\n",
            "Epoch [9/15], Step [250/469], Reconst Loss: 10630.8643, KL Div: 3240.9487\n",
            "Epoch [9/15], Step [260/469], Reconst Loss: 9739.8545, KL Div: 3232.5012\n",
            "Epoch [9/15], Step [270/469], Reconst Loss: 10312.7227, KL Div: 3242.7195\n",
            "Epoch [9/15], Step [280/469], Reconst Loss: 10414.7090, KL Div: 3252.4590\n",
            "Epoch [9/15], Step [290/469], Reconst Loss: 10435.0635, KL Div: 3142.1812\n",
            "Epoch [9/15], Step [300/469], Reconst Loss: 10732.0117, KL Div: 3300.6155\n",
            "Epoch [9/15], Step [310/469], Reconst Loss: 10223.5088, KL Div: 3323.7898\n",
            "Epoch [9/15], Step [320/469], Reconst Loss: 10887.4570, KL Div: 3175.7109\n",
            "Epoch [9/15], Step [330/469], Reconst Loss: 10537.5850, KL Div: 3325.6418\n",
            "Epoch [9/15], Step [340/469], Reconst Loss: 10051.9082, KL Div: 3182.3643\n",
            "Epoch [9/15], Step [350/469], Reconst Loss: 10386.7656, KL Div: 3322.6294\n",
            "Epoch [9/15], Step [360/469], Reconst Loss: 10580.0391, KL Div: 3325.0488\n",
            "Epoch [9/15], Step [370/469], Reconst Loss: 10499.5527, KL Div: 3209.2971\n",
            "Epoch [9/15], Step [380/469], Reconst Loss: 10405.5820, KL Div: 3300.9868\n",
            "Epoch [9/15], Step [390/469], Reconst Loss: 9608.8418, KL Div: 3098.6753\n",
            "Epoch [9/15], Step [400/469], Reconst Loss: 10149.1436, KL Div: 3221.2405\n",
            "Epoch [9/15], Step [410/469], Reconst Loss: 10157.2432, KL Div: 3337.2661\n",
            "Epoch [9/15], Step [420/469], Reconst Loss: 10509.7617, KL Div: 3199.7749\n",
            "Epoch [9/15], Step [430/469], Reconst Loss: 10129.2773, KL Div: 3272.8071\n",
            "Epoch [9/15], Step [440/469], Reconst Loss: 10967.7793, KL Div: 3239.1963\n",
            "Epoch [9/15], Step [450/469], Reconst Loss: 10051.5576, KL Div: 3273.2710\n",
            "Epoch [9/15], Step [460/469], Reconst Loss: 10206.7363, KL Div: 3221.4568\n",
            "Epoch [10/15], Step [10/469], Reconst Loss: 10231.7832, KL Div: 3233.0310\n",
            "Epoch [10/15], Step [20/469], Reconst Loss: 10472.1885, KL Div: 3239.1526\n",
            "Epoch [10/15], Step [30/469], Reconst Loss: 10110.8057, KL Div: 3323.5566\n",
            "Epoch [10/15], Step [40/469], Reconst Loss: 10521.5625, KL Div: 3137.5811\n",
            "Epoch [10/15], Step [50/469], Reconst Loss: 10449.4824, KL Div: 3313.8584\n",
            "Epoch [10/15], Step [60/469], Reconst Loss: 10004.9941, KL Div: 3211.9241\n",
            "Epoch [10/15], Step [70/469], Reconst Loss: 10431.8096, KL Div: 3255.0923\n",
            "Epoch [10/15], Step [80/469], Reconst Loss: 10584.3701, KL Div: 3248.3496\n",
            "Epoch [10/15], Step [90/469], Reconst Loss: 10193.2119, KL Div: 3345.7190\n",
            "Epoch [10/15], Step [100/469], Reconst Loss: 10250.7246, KL Div: 3215.5901\n",
            "Epoch [10/15], Step [110/469], Reconst Loss: 10686.2578, KL Div: 3264.5715\n",
            "Epoch [10/15], Step [120/469], Reconst Loss: 10497.4102, KL Div: 3243.1099\n",
            "Epoch [10/15], Step [130/469], Reconst Loss: 10379.4463, KL Div: 3288.4302\n",
            "Epoch [10/15], Step [140/469], Reconst Loss: 10338.4482, KL Div: 3245.2178\n",
            "Epoch [10/15], Step [150/469], Reconst Loss: 10276.9521, KL Div: 3312.7620\n",
            "Epoch [10/15], Step [160/469], Reconst Loss: 10537.3018, KL Div: 3240.2915\n",
            "Epoch [10/15], Step [170/469], Reconst Loss: 10052.0820, KL Div: 3279.3259\n",
            "Epoch [10/15], Step [180/469], Reconst Loss: 10109.3867, KL Div: 3307.1206\n",
            "Epoch [10/15], Step [190/469], Reconst Loss: 10254.9092, KL Div: 3249.2095\n",
            "Epoch [10/15], Step [200/469], Reconst Loss: 10030.6670, KL Div: 3296.2083\n",
            "Epoch [10/15], Step [210/469], Reconst Loss: 10270.6152, KL Div: 3200.7625\n",
            "Epoch [10/15], Step [220/469], Reconst Loss: 10468.0791, KL Div: 3246.1108\n",
            "Epoch [10/15], Step [230/469], Reconst Loss: 10405.5205, KL Div: 3378.3174\n",
            "Epoch [10/15], Step [240/469], Reconst Loss: 10023.5127, KL Div: 3184.9556\n",
            "Epoch [10/15], Step [250/469], Reconst Loss: 9988.2432, KL Div: 3261.2642\n",
            "Epoch [10/15], Step [260/469], Reconst Loss: 10531.4443, KL Div: 3294.9985\n",
            "Epoch [10/15], Step [270/469], Reconst Loss: 9959.7793, KL Div: 3176.4309\n",
            "Epoch [10/15], Step [280/469], Reconst Loss: 10440.2979, KL Div: 3221.7505\n",
            "Epoch [10/15], Step [290/469], Reconst Loss: 10115.9141, KL Div: 3215.1870\n",
            "Epoch [10/15], Step [300/469], Reconst Loss: 9778.3379, KL Div: 3328.7522\n",
            "Epoch [10/15], Step [310/469], Reconst Loss: 10063.7295, KL Div: 3149.0234\n",
            "Epoch [10/15], Step [320/469], Reconst Loss: 10238.0254, KL Div: 3181.5310\n",
            "Epoch [10/15], Step [330/469], Reconst Loss: 9985.0391, KL Div: 3165.6516\n",
            "Epoch [10/15], Step [340/469], Reconst Loss: 10604.1318, KL Div: 3225.9729\n",
            "Epoch [10/15], Step [350/469], Reconst Loss: 10268.8086, KL Div: 3247.6252\n",
            "Epoch [10/15], Step [360/469], Reconst Loss: 10318.6006, KL Div: 3241.9285\n",
            "Epoch [10/15], Step [370/469], Reconst Loss: 10410.4922, KL Div: 3197.1272\n",
            "Epoch [10/15], Step [380/469], Reconst Loss: 10329.2705, KL Div: 3243.4092\n",
            "Epoch [10/15], Step [390/469], Reconst Loss: 10327.1162, KL Div: 3155.5327\n",
            "Epoch [10/15], Step [400/469], Reconst Loss: 9948.0938, KL Div: 3260.4922\n",
            "Epoch [10/15], Step [410/469], Reconst Loss: 10101.8770, KL Div: 3266.7710\n",
            "Epoch [10/15], Step [420/469], Reconst Loss: 10343.5508, KL Div: 3252.6191\n",
            "Epoch [10/15], Step [430/469], Reconst Loss: 9990.8203, KL Div: 3175.6206\n",
            "Epoch [10/15], Step [440/469], Reconst Loss: 10655.2080, KL Div: 3279.3071\n",
            "Epoch [10/15], Step [450/469], Reconst Loss: 10676.5625, KL Div: 3354.2905\n",
            "Epoch [10/15], Step [460/469], Reconst Loss: 10421.4189, KL Div: 3295.4678\n",
            "Epoch [11/15], Step [10/469], Reconst Loss: 10324.6689, KL Div: 3213.3311\n",
            "Epoch [11/15], Step [20/469], Reconst Loss: 10414.0283, KL Div: 3281.1890\n",
            "Epoch [11/15], Step [30/469], Reconst Loss: 10179.2461, KL Div: 3276.8323\n",
            "Epoch [11/15], Step [40/469], Reconst Loss: 10455.9365, KL Div: 3386.2004\n",
            "Epoch [11/15], Step [50/469], Reconst Loss: 10644.3350, KL Div: 3207.8071\n",
            "Epoch [11/15], Step [60/469], Reconst Loss: 10174.5527, KL Div: 3252.7688\n",
            "Epoch [11/15], Step [70/469], Reconst Loss: 10262.2139, KL Div: 3218.1211\n",
            "Epoch [11/15], Step [80/469], Reconst Loss: 10653.6572, KL Div: 3257.8457\n",
            "Epoch [11/15], Step [90/469], Reconst Loss: 10635.8330, KL Div: 3345.5774\n",
            "Epoch [11/15], Step [100/469], Reconst Loss: 10397.7627, KL Div: 3253.6548\n",
            "Epoch [11/15], Step [110/469], Reconst Loss: 10134.0791, KL Div: 3126.5571\n",
            "Epoch [11/15], Step [120/469], Reconst Loss: 10412.4551, KL Div: 3346.1211\n",
            "Epoch [11/15], Step [130/469], Reconst Loss: 10151.9131, KL Div: 3277.6653\n",
            "Epoch [11/15], Step [140/469], Reconst Loss: 10656.4160, KL Div: 3269.3279\n",
            "Epoch [11/15], Step [150/469], Reconst Loss: 10329.6777, KL Div: 3255.1191\n",
            "Epoch [11/15], Step [160/469], Reconst Loss: 10117.3438, KL Div: 3339.9880\n",
            "Epoch [11/15], Step [170/469], Reconst Loss: 10615.6494, KL Div: 3346.9031\n",
            "Epoch [11/15], Step [180/469], Reconst Loss: 9702.1016, KL Div: 3197.5876\n",
            "Epoch [11/15], Step [190/469], Reconst Loss: 9947.2510, KL Div: 3226.6724\n",
            "Epoch [11/15], Step [200/469], Reconst Loss: 10748.7354, KL Div: 3361.7058\n",
            "Epoch [11/15], Step [210/469], Reconst Loss: 10345.6094, KL Div: 3248.1741\n",
            "Epoch [11/15], Step [220/469], Reconst Loss: 10272.1348, KL Div: 3263.7266\n",
            "Epoch [11/15], Step [230/469], Reconst Loss: 10505.2822, KL Div: 3272.2107\n",
            "Epoch [11/15], Step [240/469], Reconst Loss: 10237.3164, KL Div: 3210.9839\n",
            "Epoch [11/15], Step [250/469], Reconst Loss: 10493.0244, KL Div: 3264.1985\n",
            "Epoch [11/15], Step [260/469], Reconst Loss: 10001.9863, KL Div: 3251.0151\n",
            "Epoch [11/15], Step [270/469], Reconst Loss: 10120.9971, KL Div: 3185.8611\n",
            "Epoch [11/15], Step [280/469], Reconst Loss: 9969.4414, KL Div: 3254.0012\n",
            "Epoch [11/15], Step [290/469], Reconst Loss: 10215.0723, KL Div: 3317.7512\n",
            "Epoch [11/15], Step [300/469], Reconst Loss: 10786.9795, KL Div: 3287.8337\n",
            "Epoch [11/15], Step [310/469], Reconst Loss: 10277.7236, KL Div: 3273.7795\n",
            "Epoch [11/15], Step [320/469], Reconst Loss: 10326.2344, KL Div: 3182.7952\n",
            "Epoch [11/15], Step [330/469], Reconst Loss: 10031.0420, KL Div: 3156.7632\n",
            "Epoch [11/15], Step [340/469], Reconst Loss: 10606.9707, KL Div: 3326.0872\n",
            "Epoch [11/15], Step [350/469], Reconst Loss: 10759.8486, KL Div: 3231.7703\n",
            "Epoch [11/15], Step [360/469], Reconst Loss: 10340.0010, KL Div: 3326.1270\n",
            "Epoch [11/15], Step [370/469], Reconst Loss: 10473.9287, KL Div: 3274.7104\n",
            "Epoch [11/15], Step [380/469], Reconst Loss: 10095.8828, KL Div: 3221.8633\n",
            "Epoch [11/15], Step [390/469], Reconst Loss: 10669.2197, KL Div: 3369.1404\n",
            "Epoch [11/15], Step [400/469], Reconst Loss: 9882.0234, KL Div: 3286.8479\n",
            "Epoch [11/15], Step [410/469], Reconst Loss: 10310.2295, KL Div: 3172.5686\n",
            "Epoch [11/15], Step [420/469], Reconst Loss: 10570.9785, KL Div: 3325.9246\n",
            "Epoch [11/15], Step [430/469], Reconst Loss: 10008.2178, KL Div: 3192.8369\n",
            "Epoch [11/15], Step [440/469], Reconst Loss: 9896.6562, KL Div: 3197.9412\n",
            "Epoch [11/15], Step [450/469], Reconst Loss: 9984.6836, KL Div: 3177.4644\n",
            "Epoch [11/15], Step [460/469], Reconst Loss: 10179.8809, KL Div: 3300.5266\n",
            "Epoch [12/15], Step [10/469], Reconst Loss: 10054.5967, KL Div: 3354.7515\n",
            "Epoch [12/15], Step [20/469], Reconst Loss: 10278.7617, KL Div: 3181.4392\n",
            "Epoch [12/15], Step [30/469], Reconst Loss: 10245.4639, KL Div: 3319.2195\n",
            "Epoch [12/15], Step [40/469], Reconst Loss: 10270.4082, KL Div: 3258.9458\n",
            "Epoch [12/15], Step [50/469], Reconst Loss: 10113.4424, KL Div: 3242.4629\n",
            "Epoch [12/15], Step [60/469], Reconst Loss: 10062.7314, KL Div: 3224.6499\n",
            "Epoch [12/15], Step [70/469], Reconst Loss: 10331.5068, KL Div: 3236.1091\n",
            "Epoch [12/15], Step [80/469], Reconst Loss: 10266.5693, KL Div: 3339.4995\n",
            "Epoch [12/15], Step [90/469], Reconst Loss: 10606.3252, KL Div: 3302.6416\n",
            "Epoch [12/15], Step [100/469], Reconst Loss: 10227.5322, KL Div: 3277.5024\n",
            "Epoch [12/15], Step [110/469], Reconst Loss: 9714.9971, KL Div: 3194.8630\n",
            "Epoch [12/15], Step [120/469], Reconst Loss: 10244.9287, KL Div: 3245.1587\n",
            "Epoch [12/15], Step [130/469], Reconst Loss: 10081.7754, KL Div: 3216.1746\n",
            "Epoch [12/15], Step [140/469], Reconst Loss: 10003.7695, KL Div: 3222.2976\n",
            "Epoch [12/15], Step [150/469], Reconst Loss: 10455.6924, KL Div: 3284.5366\n",
            "Epoch [12/15], Step [160/469], Reconst Loss: 10290.2734, KL Div: 3263.5359\n",
            "Epoch [12/15], Step [170/469], Reconst Loss: 10134.6387, KL Div: 3179.5654\n",
            "Epoch [12/15], Step [180/469], Reconst Loss: 10788.0146, KL Div: 3312.3628\n",
            "Epoch [12/15], Step [190/469], Reconst Loss: 10317.3223, KL Div: 3278.8184\n",
            "Epoch [12/15], Step [200/469], Reconst Loss: 9555.6543, KL Div: 3192.6733\n",
            "Epoch [12/15], Step [210/469], Reconst Loss: 9931.5293, KL Div: 3307.2715\n",
            "Epoch [12/15], Step [220/469], Reconst Loss: 10397.1396, KL Div: 3316.0264\n",
            "Epoch [12/15], Step [230/469], Reconst Loss: 10414.8906, KL Div: 3277.6201\n",
            "Epoch [12/15], Step [240/469], Reconst Loss: 9212.2715, KL Div: 3178.9346\n",
            "Epoch [12/15], Step [250/469], Reconst Loss: 10320.7480, KL Div: 3353.9297\n",
            "Epoch [12/15], Step [260/469], Reconst Loss: 9774.7119, KL Div: 3184.0146\n",
            "Epoch [12/15], Step [270/469], Reconst Loss: 10629.8252, KL Div: 3317.6970\n",
            "Epoch [12/15], Step [280/469], Reconst Loss: 10159.3525, KL Div: 3239.2205\n",
            "Epoch [12/15], Step [290/469], Reconst Loss: 10214.1611, KL Div: 3230.0776\n",
            "Epoch [12/15], Step [300/469], Reconst Loss: 10157.6172, KL Div: 3307.6956\n",
            "Epoch [12/15], Step [310/469], Reconst Loss: 10380.0850, KL Div: 3124.3181\n",
            "Epoch [12/15], Step [320/469], Reconst Loss: 9970.4492, KL Div: 3267.9268\n",
            "Epoch [12/15], Step [330/469], Reconst Loss: 10386.1621, KL Div: 3302.2522\n",
            "Epoch [12/15], Step [340/469], Reconst Loss: 9725.9326, KL Div: 3066.2734\n",
            "Epoch [12/15], Step [350/469], Reconst Loss: 9793.6494, KL Div: 3265.1248\n",
            "Epoch [12/15], Step [360/469], Reconst Loss: 10475.6270, KL Div: 3260.2639\n",
            "Epoch [12/15], Step [370/469], Reconst Loss: 10283.2637, KL Div: 3297.8589\n",
            "Epoch [12/15], Step [380/469], Reconst Loss: 10191.8662, KL Div: 3303.6406\n",
            "Epoch [12/15], Step [390/469], Reconst Loss: 10066.9727, KL Div: 3182.3921\n",
            "Epoch [12/15], Step [400/469], Reconst Loss: 10250.3818, KL Div: 3281.5269\n",
            "Epoch [12/15], Step [410/469], Reconst Loss: 10017.2051, KL Div: 3261.8652\n",
            "Epoch [12/15], Step [420/469], Reconst Loss: 9965.7021, KL Div: 3137.4617\n",
            "Epoch [12/15], Step [430/469], Reconst Loss: 10265.1523, KL Div: 3273.5908\n",
            "Epoch [12/15], Step [440/469], Reconst Loss: 10341.0459, KL Div: 3205.3816\n",
            "Epoch [12/15], Step [450/469], Reconst Loss: 9958.0781, KL Div: 3238.7961\n",
            "Epoch [12/15], Step [460/469], Reconst Loss: 9559.9893, KL Div: 3107.3335\n",
            "Epoch [13/15], Step [10/469], Reconst Loss: 10351.9062, KL Div: 3221.6577\n",
            "Epoch [13/15], Step [20/469], Reconst Loss: 10290.8896, KL Div: 3327.7959\n",
            "Epoch [13/15], Step [30/469], Reconst Loss: 10330.4160, KL Div: 3278.1787\n",
            "Epoch [13/15], Step [40/469], Reconst Loss: 10133.2471, KL Div: 3231.3274\n",
            "Epoch [13/15], Step [50/469], Reconst Loss: 10465.9561, KL Div: 3304.3330\n",
            "Epoch [13/15], Step [60/469], Reconst Loss: 9968.8301, KL Div: 3234.8337\n",
            "Epoch [13/15], Step [70/469], Reconst Loss: 10142.0938, KL Div: 3192.7390\n",
            "Epoch [13/15], Step [80/469], Reconst Loss: 9660.5996, KL Div: 3204.3516\n",
            "Epoch [13/15], Step [90/469], Reconst Loss: 10168.9951, KL Div: 3163.4492\n",
            "Epoch [13/15], Step [100/469], Reconst Loss: 9928.1406, KL Div: 3213.5396\n",
            "Epoch [13/15], Step [110/469], Reconst Loss: 9894.6475, KL Div: 3308.9253\n",
            "Epoch [13/15], Step [120/469], Reconst Loss: 10468.3916, KL Div: 3191.6074\n",
            "Epoch [13/15], Step [130/469], Reconst Loss: 10127.6963, KL Div: 3313.2788\n",
            "Epoch [13/15], Step [140/469], Reconst Loss: 10414.5303, KL Div: 3242.2412\n",
            "Epoch [13/15], Step [150/469], Reconst Loss: 9970.8096, KL Div: 3177.8481\n",
            "Epoch [13/15], Step [160/469], Reconst Loss: 10185.1992, KL Div: 3272.2651\n",
            "Epoch [13/15], Step [170/469], Reconst Loss: 10280.7910, KL Div: 3216.6394\n",
            "Epoch [13/15], Step [180/469], Reconst Loss: 9808.6221, KL Div: 3167.9810\n",
            "Epoch [13/15], Step [190/469], Reconst Loss: 9848.3799, KL Div: 3215.9827\n",
            "Epoch [13/15], Step [200/469], Reconst Loss: 10399.8359, KL Div: 3303.5996\n",
            "Epoch [13/15], Step [210/469], Reconst Loss: 10180.0518, KL Div: 3140.7427\n",
            "Epoch [13/15], Step [220/469], Reconst Loss: 10214.4463, KL Div: 3336.1208\n",
            "Epoch [13/15], Step [230/469], Reconst Loss: 10467.2510, KL Div: 3227.3711\n",
            "Epoch [13/15], Step [240/469], Reconst Loss: 9970.0830, KL Div: 3226.9512\n",
            "Epoch [13/15], Step [250/469], Reconst Loss: 10481.4248, KL Div: 3230.4116\n",
            "Epoch [13/15], Step [260/469], Reconst Loss: 10011.5342, KL Div: 3303.4944\n",
            "Epoch [13/15], Step [270/469], Reconst Loss: 10365.2275, KL Div: 3363.7480\n",
            "Epoch [13/15], Step [280/469], Reconst Loss: 10665.5254, KL Div: 3261.4253\n",
            "Epoch [13/15], Step [290/469], Reconst Loss: 10302.3818, KL Div: 3444.6558\n",
            "Epoch [13/15], Step [300/469], Reconst Loss: 9919.9736, KL Div: 3236.7651\n",
            "Epoch [13/15], Step [310/469], Reconst Loss: 10283.9492, KL Div: 3236.7151\n",
            "Epoch [13/15], Step [320/469], Reconst Loss: 10448.0303, KL Div: 3292.7495\n",
            "Epoch [13/15], Step [330/469], Reconst Loss: 10392.9365, KL Div: 3133.1328\n",
            "Epoch [13/15], Step [340/469], Reconst Loss: 9891.0342, KL Div: 3285.2734\n",
            "Epoch [13/15], Step [350/469], Reconst Loss: 9567.8320, KL Div: 3111.7620\n",
            "Epoch [13/15], Step [360/469], Reconst Loss: 10086.1963, KL Div: 3274.2368\n",
            "Epoch [13/15], Step [370/469], Reconst Loss: 10220.3740, KL Div: 3213.8982\n",
            "Epoch [13/15], Step [380/469], Reconst Loss: 10468.1211, KL Div: 3282.3560\n",
            "Epoch [13/15], Step [390/469], Reconst Loss: 10136.2725, KL Div: 3327.4263\n",
            "Epoch [13/15], Step [400/469], Reconst Loss: 10138.6572, KL Div: 3303.2471\n",
            "Epoch [13/15], Step [410/469], Reconst Loss: 10572.4277, KL Div: 3348.2239\n",
            "Epoch [13/15], Step [420/469], Reconst Loss: 10519.2383, KL Div: 3245.7437\n",
            "Epoch [13/15], Step [430/469], Reconst Loss: 10302.5781, KL Div: 3266.8411\n",
            "Epoch [13/15], Step [440/469], Reconst Loss: 10203.9736, KL Div: 3241.5032\n",
            "Epoch [13/15], Step [450/469], Reconst Loss: 9943.0889, KL Div: 3302.1692\n",
            "Epoch [13/15], Step [460/469], Reconst Loss: 9913.8535, KL Div: 3296.7725\n",
            "Epoch [14/15], Step [10/469], Reconst Loss: 10183.3145, KL Div: 3200.3813\n",
            "Epoch [14/15], Step [20/469], Reconst Loss: 10171.5723, KL Div: 3375.8354\n",
            "Epoch [14/15], Step [30/469], Reconst Loss: 10937.2520, KL Div: 3244.7856\n",
            "Epoch [14/15], Step [40/469], Reconst Loss: 9994.9238, KL Div: 3376.0493\n",
            "Epoch [14/15], Step [50/469], Reconst Loss: 10112.9619, KL Div: 3222.6484\n",
            "Epoch [14/15], Step [60/469], Reconst Loss: 10348.4463, KL Div: 3313.0273\n",
            "Epoch [14/15], Step [70/469], Reconst Loss: 9992.9805, KL Div: 3223.3574\n",
            "Epoch [14/15], Step [80/469], Reconst Loss: 10392.0908, KL Div: 3320.6714\n",
            "Epoch [14/15], Step [90/469], Reconst Loss: 10255.1650, KL Div: 3308.6030\n",
            "Epoch [14/15], Step [100/469], Reconst Loss: 10097.3203, KL Div: 3325.7747\n",
            "Epoch [14/15], Step [110/469], Reconst Loss: 10518.3623, KL Div: 3294.7222\n",
            "Epoch [14/15], Step [120/469], Reconst Loss: 10240.1826, KL Div: 3282.1665\n",
            "Epoch [14/15], Step [130/469], Reconst Loss: 9908.1650, KL Div: 3275.0461\n",
            "Epoch [14/15], Step [140/469], Reconst Loss: 9986.3555, KL Div: 3228.9331\n",
            "Epoch [14/15], Step [150/469], Reconst Loss: 10562.1680, KL Div: 3383.5439\n",
            "Epoch [14/15], Step [160/469], Reconst Loss: 10450.7715, KL Div: 3357.0034\n",
            "Epoch [14/15], Step [170/469], Reconst Loss: 10101.0322, KL Div: 3237.5647\n",
            "Epoch [14/15], Step [180/469], Reconst Loss: 10262.8887, KL Div: 3345.9087\n",
            "Epoch [14/15], Step [190/469], Reconst Loss: 10559.4893, KL Div: 3164.5576\n",
            "Epoch [14/15], Step [200/469], Reconst Loss: 10186.0293, KL Div: 3395.5010\n",
            "Epoch [14/15], Step [210/469], Reconst Loss: 9778.2383, KL Div: 3124.3120\n",
            "Epoch [14/15], Step [220/469], Reconst Loss: 10184.7793, KL Div: 3348.7371\n",
            "Epoch [14/15], Step [230/469], Reconst Loss: 9767.6865, KL Div: 3255.6912\n",
            "Epoch [14/15], Step [240/469], Reconst Loss: 10245.5029, KL Div: 3355.0156\n",
            "Epoch [14/15], Step [250/469], Reconst Loss: 9980.6748, KL Div: 3175.5271\n",
            "Epoch [14/15], Step [260/469], Reconst Loss: 10185.0674, KL Div: 3348.7710\n",
            "Epoch [14/15], Step [270/469], Reconst Loss: 10189.8574, KL Div: 3276.3818\n",
            "Epoch [14/15], Step [280/469], Reconst Loss: 10157.4775, KL Div: 3300.3518\n",
            "Epoch [14/15], Step [290/469], Reconst Loss: 9909.2051, KL Div: 3163.9536\n",
            "Epoch [14/15], Step [300/469], Reconst Loss: 10438.2549, KL Div: 3303.1191\n",
            "Epoch [14/15], Step [310/469], Reconst Loss: 10038.2002, KL Div: 3258.2266\n",
            "Epoch [14/15], Step [320/469], Reconst Loss: 10707.8057, KL Div: 3271.4673\n",
            "Epoch [14/15], Step [330/469], Reconst Loss: 10542.4746, KL Div: 3268.2268\n",
            "Epoch [14/15], Step [340/469], Reconst Loss: 10173.1211, KL Div: 3264.6738\n",
            "Epoch [14/15], Step [350/469], Reconst Loss: 9939.7646, KL Div: 3297.1052\n",
            "Epoch [14/15], Step [360/469], Reconst Loss: 10697.6836, KL Div: 3241.4988\n",
            "Epoch [14/15], Step [370/469], Reconst Loss: 10381.6465, KL Div: 3389.2261\n",
            "Epoch [14/15], Step [380/469], Reconst Loss: 10271.1885, KL Div: 3320.4878\n",
            "Epoch [14/15], Step [390/469], Reconst Loss: 10388.1592, KL Div: 3292.0559\n",
            "Epoch [14/15], Step [400/469], Reconst Loss: 9934.6475, KL Div: 3159.1345\n",
            "Epoch [14/15], Step [410/469], Reconst Loss: 9890.0244, KL Div: 3187.6108\n",
            "Epoch [14/15], Step [420/469], Reconst Loss: 10118.3203, KL Div: 3321.3582\n",
            "Epoch [14/15], Step [430/469], Reconst Loss: 9956.4092, KL Div: 3328.1267\n",
            "Epoch [14/15], Step [440/469], Reconst Loss: 10312.8535, KL Div: 3330.7581\n",
            "Epoch [14/15], Step [450/469], Reconst Loss: 10087.8496, KL Div: 3281.3926\n",
            "Epoch [14/15], Step [460/469], Reconst Loss: 10219.6943, KL Div: 3309.8086\n",
            "Epoch [15/15], Step [10/469], Reconst Loss: 10080.6084, KL Div: 3251.0803\n",
            "Epoch [15/15], Step [20/469], Reconst Loss: 10225.1924, KL Div: 3260.7163\n",
            "Epoch [15/15], Step [30/469], Reconst Loss: 10014.2383, KL Div: 3288.3970\n",
            "Epoch [15/15], Step [40/469], Reconst Loss: 10200.3232, KL Div: 3307.1934\n",
            "Epoch [15/15], Step [50/469], Reconst Loss: 10468.3496, KL Div: 3302.3799\n",
            "Epoch [15/15], Step [60/469], Reconst Loss: 10141.0088, KL Div: 3212.1089\n",
            "Epoch [15/15], Step [70/469], Reconst Loss: 10576.7246, KL Div: 3208.2029\n",
            "Epoch [15/15], Step [80/469], Reconst Loss: 10500.2930, KL Div: 3264.1033\n",
            "Epoch [15/15], Step [90/469], Reconst Loss: 9833.2656, KL Div: 3269.3647\n",
            "Epoch [15/15], Step [100/469], Reconst Loss: 10642.5391, KL Div: 3189.2993\n",
            "Epoch [15/15], Step [110/469], Reconst Loss: 9923.5703, KL Div: 3334.5398\n",
            "Epoch [15/15], Step [120/469], Reconst Loss: 10534.1738, KL Div: 3309.0747\n",
            "Epoch [15/15], Step [130/469], Reconst Loss: 10667.3379, KL Div: 3292.0498\n",
            "Epoch [15/15], Step [140/469], Reconst Loss: 10634.6426, KL Div: 3285.3074\n",
            "Epoch [15/15], Step [150/469], Reconst Loss: 10255.3906, KL Div: 3311.9392\n",
            "Epoch [15/15], Step [160/469], Reconst Loss: 10271.9326, KL Div: 3272.3293\n",
            "Epoch [15/15], Step [170/469], Reconst Loss: 10204.2666, KL Div: 3280.7754\n",
            "Epoch [15/15], Step [180/469], Reconst Loss: 9936.8564, KL Div: 3187.1785\n",
            "Epoch [15/15], Step [190/469], Reconst Loss: 10160.9043, KL Div: 3239.5427\n",
            "Epoch [15/15], Step [200/469], Reconst Loss: 10070.2207, KL Div: 3276.6519\n",
            "Epoch [15/15], Step [210/469], Reconst Loss: 9856.6719, KL Div: 3211.4612\n",
            "Epoch [15/15], Step [220/469], Reconst Loss: 9970.2607, KL Div: 3323.4214\n",
            "Epoch [15/15], Step [230/469], Reconst Loss: 10022.0752, KL Div: 3205.8066\n",
            "Epoch [15/15], Step [240/469], Reconst Loss: 9781.2422, KL Div: 3304.9966\n",
            "Epoch [15/15], Step [250/469], Reconst Loss: 10371.4756, KL Div: 3261.8013\n",
            "Epoch [15/15], Step [260/469], Reconst Loss: 10611.5176, KL Div: 3358.5200\n",
            "Epoch [15/15], Step [270/469], Reconst Loss: 10193.7676, KL Div: 3197.0183\n",
            "Epoch [15/15], Step [280/469], Reconst Loss: 10544.7246, KL Div: 3368.9631\n",
            "Epoch [15/15], Step [290/469], Reconst Loss: 10193.3213, KL Div: 3300.9031\n",
            "Epoch [15/15], Step [300/469], Reconst Loss: 9808.9209, KL Div: 3216.2505\n",
            "Epoch [15/15], Step [310/469], Reconst Loss: 10323.0547, KL Div: 3254.1218\n",
            "Epoch [15/15], Step [320/469], Reconst Loss: 9950.3672, KL Div: 3230.9883\n",
            "Epoch [15/15], Step [330/469], Reconst Loss: 9943.0000, KL Div: 3250.7078\n",
            "Epoch [15/15], Step [340/469], Reconst Loss: 9950.0498, KL Div: 3297.7815\n",
            "Epoch [15/15], Step [350/469], Reconst Loss: 10155.8496, KL Div: 3200.8950\n",
            "Epoch [15/15], Step [360/469], Reconst Loss: 10070.1621, KL Div: 3325.1943\n",
            "Epoch [15/15], Step [370/469], Reconst Loss: 10227.3213, KL Div: 3263.0276\n",
            "Epoch [15/15], Step [380/469], Reconst Loss: 10569.7402, KL Div: 3254.7278\n",
            "Epoch [15/15], Step [390/469], Reconst Loss: 10221.1270, KL Div: 3257.8694\n",
            "Epoch [15/15], Step [400/469], Reconst Loss: 9547.3701, KL Div: 3279.2737\n",
            "Epoch [15/15], Step [410/469], Reconst Loss: 10053.9629, KL Div: 3200.5479\n",
            "Epoch [15/15], Step [420/469], Reconst Loss: 10709.4873, KL Div: 3276.3213\n",
            "Epoch [15/15], Step [430/469], Reconst Loss: 9781.9062, KL Div: 3239.9868\n",
            "Epoch [15/15], Step [440/469], Reconst Loss: 10246.4062, KL Div: 3287.0273\n",
            "Epoch [15/15], Step [450/469], Reconst Loss: 10236.1650, KL Div: 3272.9297\n",
            "Epoch [15/15], Step [460/469], Reconst Loss: 10276.3359, KL Div: 3321.1240\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "up9lJy_ERqpj",
        "colab_type": "text"
      },
      "source": [
        "# 6"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tgKmKC4oP-qz",
        "colab_type": "code",
        "outputId": "f0447049-52af-4206-e10b-00932d45aece",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 196
        }
      },
      "source": [
        "!pip install argparse"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting argparse\n",
            "  Downloading https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl\n",
            "Installing collected packages: argparse\n",
            "Successfully installed argparse-1.4.0\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.colab-display-data+json": {
              "pip_warning": {
                "packages": [
                  "argparse"
                ]
              }
            }
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Iw-jSyspYnv-",
        "colab_type": "code",
        "outputId": "8cef8eb9-ef9c-4545-c4ee-369672959819",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "!pip install Pillow"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.6/dist-packages (4.3.0)\n",
            "Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from Pillow) (0.46)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DxrvPsFeYsMf",
        "colab_type": "code",
        "outputId": "0a1b82b1-da26-42c7-a6ce-fd947e5739b5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "!ls"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "sample_data\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YHCLx2-sY5Sq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from __future__ import division \n",
        "from torchvision import models \n",
        "from torchvision import transforms \n",
        "from PIL import Image \n",
        "import argparse \n",
        "import torch \n",
        "import torchvision \n",
        "import torch.nn as nn \n",
        "import numpy as np "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fgo3Qt3XZVia",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9p85_4cqZmUI",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!mkdir png "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "L3XLv-duaD8z",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def load_image(image_path, transform=None, max_size=None, shape=None):\n",
        "    image = Image.open(image_path)\n",
        "\n",
        "    if max_size:\n",
        "        scale = max_size / max(image.size)\n",
        "        size = np.array(image.size) * scale \n",
        "        image = image.resize(size.astype(int), Image.ANTIALIAS)\n",
        "\n",
        "    if shape:\n",
        "        image = image.resize(shape, Image.LANCZOS)\n",
        "\n",
        "    if transform:\n",
        "        image = transform(image).unsqueeze(0)\n",
        "\n",
        "    return image.to(device)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Jc3jOsnvcZqh",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class VGGNet(nn.Module):\n",
        "    def __init__(self):\n",
        "        super(VGGNet, self).__init__()\n",
        "        self.select = ['0', '5', '10', '19', '28']\n",
        "        self.vgg = models.vgg19(pretrained=True).features \n",
        "\n",
        "    def forward(self, x):\n",
        "        features = []\n",
        "        for namr, layer in self.vgg_modules.items():\n",
        "            x = layer(x)\n",
        "            if name in self.select:\n",
        "                features.append(x)\n",
        "        return features"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "hj9iWtiIdOPj",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def main(config):\n",
        "    transform = transforms.Compose([\n",
        "        transforms.ToTensor(), \n",
        "        transforms.Normalize(mean=(0.485, 0.456, 0.406), \n",
        "                  std=(0.229, 0.224, 0.225))\n",
        "\n",
        "    content = load_image(config.content, transform, max_size=config.max_size)\n",
        "    style = load_image(config.style, transform, shape=[content.size(2), content.size(3)])\n",
        "\n",
        "    target = content.clone().requires_grad_(True)\n",
        "    optimizer = torch.optim.Adam([target], lr=config.lr, betas=[0.5, 0.999])\n",
        "    vgg = VGGNet().to(device).eval()\n",
        "\n",
        "    for step in range(config.total_step):\n",
        "        target_features = vgg(target)\n",
        "        content_features = vgg(content)\n",
        "        style_features = vgg(style)\n",
        "\n",
        "        style_loss = 0 \n",
        "        content_loss = 0 \n",
        "        for f1, f2, f3 in zip(target_features, content_features, style_features):\n",
        "            content_loss += torch.mean((f1 - f2)**2)\n",
        "\n",
        "            _, c, h, w = f1.size()\n",
        "            f1 = f1.view(c, h * w)\n",
        "            f3 = f3.view(c, h * w)\n",
        "\n",
        "            f1 = torch.mm(f1, f1.t())\n",
        "            f3 = torch.mm(f3, f3.t())\n",
        "\n",
        "            style_loss += torch.mean((f1 - f3)**2) / (c * h * w)\n",
        "\n",
        "        loss = content_loss + config.style_weight * style_loss \n",
        "        optimizer.zero_grad()\n",
        "        loss.backward()\n",
        "        optimizer.step()\n",
        "\n",
        "        if (step+1) % config.log_step == 0:\n",
        "            print()\n",
        "\n",
        "        if (step+1) % config.sample_step == 0:\n",
        "            denorm = transforms.Normalize((-2.12, -2.04, -1.80), (4.37, 4.46, 4.44))\n",
        "            img = target.clone().squeeze()\n",
        "            img = denorm(img).clamp_(0, 1)\n",
        "            torchvision.utils.save_image(img, 'output{}.png'.format(step+1))\n",
        "    ])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V3HZCnSOgs9w",
        "colab_type": "text"
      },
      "source": [
        "# 7"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zxM4imYShC9u",
        "colab_type": "code",
        "outputId": "dde3deb3-eecd-4bcd-b060-2daaefb3eb0e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "!git clone https://github.com/yunjey/pytorch-tutorial.git"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Cloning into 'pytorch-tutorial'...\n",
            "remote: Enumerating objects: 816, done.\u001b[K\n",
            "Receiving objects:   0% (1/816)   \rReceiving objects:   1% (9/816)   \rReceiving objects:   2% (17/816)   \rReceiving objects:   3% (25/816)   \rReceiving objects:   4% (33/816)   \rReceiving objects:   5% (41/816)   \rReceiving objects:   6% (49/816)   \rReceiving objects:   7% (58/816)   \rReceiving objects:   8% (66/816)   \rReceiving objects:   9% (74/816)   \rReceiving objects:  10% (82/816)   \rReceiving objects:  11% (90/816)   \rReceiving objects:  12% (98/816)   \rReceiving objects:  13% (107/816)   \rReceiving objects:  14% (115/816)   \rReceiving objects:  15% (123/816)   \rReceiving objects:  16% (131/816)   \rReceiving objects:  17% (139/816)   \rReceiving objects:  18% (147/816)   \rReceiving objects:  19% (156/816)   \rReceiving objects:  20% (164/816)   \rReceiving objects:  21% (172/816)   \rReceiving objects:  22% (180/816)   \rReceiving objects:  23% (188/816)   \rReceiving objects:  24% (196/816)   \rReceiving objects:  25% (204/816)   \rReceiving objects:  26% (213/816)   \rReceiving objects:  27% (221/816)   \rReceiving objects:  28% (229/816)   \rReceiving objects:  29% (237/816)   \rReceiving objects:  30% (245/816)   \rReceiving objects:  31% (253/816)   \rReceiving objects:  32% (262/816)   \rReceiving objects:  33% (270/816)   \rReceiving objects:  34% (278/816)   \rReceiving objects:  35% (286/816)   \rReceiving objects:  36% (294/816)   \rReceiving objects:  37% (302/816)   \rReceiving objects:  38% (311/816)   \rReceiving objects:  39% (319/816)   \rReceiving objects:  40% (327/816)   \rReceiving objects:  41% (335/816)   \rReceiving objects:  42% (343/816)   \rReceiving objects:  43% (351/816)   \rReceiving objects:  44% (360/816)   \rReceiving objects:  45% (368/816)   \rReceiving objects:  46% (376/816)   \rReceiving objects:  47% (384/816)   \rReceiving objects:  48% (392/816)   \rReceiving objects:  49% (400/816)   \rReceiving objects:  50% (408/816)   \rReceiving objects:  51% (417/816)   \rReceiving objects:  52% (425/816)   \rReceiving objects:  53% (433/816)   \rReceiving objects:  54% (441/816)   \rReceiving objects:  55% (449/816)   \rReceiving objects:  56% (457/816)   \rReceiving objects:  57% (466/816)   \rReceiving objects:  58% (474/816)   \rReceiving objects:  59% (482/816)   \rReceiving objects:  60% (490/816)   \rReceiving objects:  61% (498/816)   \rReceiving objects:  62% (506/816)   \rReceiving objects:  63% (515/816)   \rReceiving objects:  64% (523/816)   \rReceiving objects:  65% (531/816)   \rReceiving objects:  66% (539/816)   \rReceiving objects:  67% (547/816)   \rReceiving objects:  68% (555/816)   \rReceiving objects:  69% (564/816)   \rReceiving objects:  70% (572/816)   \rReceiving objects:  71% (580/816)   \rReceiving objects:  72% (588/816)   \rReceiving objects:  73% (596/816)   \rReceiving objects:  74% (604/816)   \rReceiving objects:  75% (612/816)   \rReceiving objects:  76% (621/816)   \rReceiving objects:  77% (629/816)   \rReceiving objects:  78% (637/816)   \rReceiving objects:  79% (645/816)   \rReceiving objects:  80% (653/816)   \rReceiving objects:  81% (661/816)   \rReceiving objects:  82% (670/816)   \rReceiving objects:  83% (678/816)   \rReceiving objects:  84% (686/816)   \rremote: Total 816 (delta 0), reused 0 (delta 0), pack-reused 816\n",
            "Receiving objects:  85% (694/816)   \rReceiving objects:  86% (702/816)   \rReceiving objects:  87% (710/816)   \rReceiving objects:  88% (719/816)   \rReceiving objects:  89% (727/816)   \rReceiving objects:  90% (735/816)   \rReceiving objects:  91% (743/816)   \rReceiving objects:  92% (751/816)   \rReceiving objects:  93% (759/816)   \rReceiving objects:  94% (768/816)   \rReceiving objects:  95% (776/816)   \rReceiving objects:  96% (784/816)   \rReceiving objects:  97% (792/816)   \rReceiving objects:  98% (800/816)   \rReceiving objects:  99% (808/816)   \rReceiving objects: 100% (816/816)   \rReceiving objects: 100% (816/816), 12.78 MiB | 37.29 MiB/s, done.\n",
            "Resolving deltas:   0% (0/432)   \rResolving deltas:  21% (91/432)   \rResolving deltas:  22% (96/432)   \rResolving deltas:  23% (100/432)   \rResolving deltas:  24% (106/432)   \rResolving deltas:  25% (110/432)   \rResolving deltas:  26% (113/432)   \rResolving deltas:  27% (117/432)   \rResolving deltas:  28% (121/432)   \rResolving deltas:  29% (129/432)   \rResolving deltas:  31% (138/432)   \rResolving deltas:  32% (139/432)   \rResolving deltas:  33% (143/432)   \rResolving deltas:  34% (147/432)   \rResolving deltas:  35% (155/432)   \rResolving deltas:  36% (157/432)   \rResolving deltas:  37% (164/432)   \rResolving deltas:  38% (165/432)   \rResolving deltas:  39% (169/432)   \rResolving deltas:  41% (178/432)   \rResolving deltas:  42% (184/432)   \rResolving deltas:  43% (188/432)   \rResolving deltas:  44% (193/432)   \rResolving deltas:  47% (205/432)   \rResolving deltas:  48% (208/432)   \rResolving deltas:  49% (213/432)   \rResolving deltas:  50% (216/432)   \rResolving deltas:  51% (221/432)   \rResolving deltas:  52% (226/432)   \rResolving deltas:  53% (232/432)   \rResolving deltas:  56% (243/432)   \rResolving deltas:  59% (256/432)   \rResolving deltas:  60% (262/432)   \rResolving deltas:  65% (281/432)   \rResolving deltas:  74% (323/432)   \rResolving deltas:  78% (341/432)   \rResolving deltas:  81% (351/432)   \rResolving deltas:  82% (355/432)   \rResolving deltas:  83% (360/432)   \rResolving deltas:  84% (366/432)   \rResolving deltas:  87% (379/432)   \rResolving deltas:  92% (398/432)   \rResolving deltas:  93% (404/432)   \rResolving deltas:  94% (408/432)   \rResolving deltas:  95% (413/432)   \rResolving deltas:  96% (418/432)   \rResolving deltas:  98% (424/432)   \rResolving deltas:  99% (430/432)   \rResolving deltas: 100% (432/432)   \rResolving deltas: 100% (432/432), done.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qTX3Bl5hhEJm",
        "colab_type": "code",
        "outputId": "b3f6d033-0e95-4496-a5ba-edf4572e9535",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "!ls"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "png  pytorch-tutorial  sample_data\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PbRLNi1jk3uh",
        "colab_type": "code",
        "outputId": "c07e0f5e-e9c8-42c4-da45-2001ca3b2e63",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "!python ./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/main.py --content='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/content.png'  --style='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/style3.png'"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Namespace(content='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/content.png', log_step=10, lr=0.003, max_size=400, sample_step=500, style='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/style.png', style_weight=100, total_step=2000)\n",
            "Downloading: \"https://download.pytorch.org/models/vgg19-dcbb9e9d.pth\" to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth\n",
            "100% 548M/548M [00:09<00:00, 57.5MB/s]\n",
            "Step [10/2000], Content Loss: 6.8235, Style Loss: 113.8935\n",
            "Step [20/2000], Content Loss: 10.2459, Style Loss: 85.9166\n",
            "Step [30/2000], Content Loss: 12.3221, Style Loss: 71.9203\n",
            "Step [40/2000], Content Loss: 13.6759, Style Loss: 62.9203\n",
            "Step [50/2000], Content Loss: 14.6150, Style Loss: 56.5528\n",
            "Step [60/2000], Content Loss: 15.3100, Style Loss: 51.6885\n",
            "Step [70/2000], Content Loss: 15.8551, Style Loss: 47.7848\n",
            "Step [80/2000], Content Loss: 16.2998, Style Loss: 44.5473\n",
            "Step [90/2000], Content Loss: 16.6769, Style Loss: 41.8052\n",
            "Step [100/2000], Content Loss: 17.0071, Style Loss: 39.4567\n",
            "Step [110/2000], Content Loss: 17.2977, Style Loss: 37.4217\n",
            "Step [120/2000], Content Loss: 17.5554, Style Loss: 35.6461\n",
            "Step [130/2000], Content Loss: 17.7845, Style Loss: 34.0756\n",
            "Step [140/2000], Content Loss: 17.9912, Style Loss: 32.6814\n",
            "Step [150/2000], Content Loss: 18.1835, Style Loss: 31.4341\n",
            "Step [160/2000], Content Loss: 18.3593, Style Loss: 30.3138\n",
            "Step [170/2000], Content Loss: 18.5211, Style Loss: 29.3010\n",
            "Step [180/2000], Content Loss: 18.6749, Style Loss: 28.3794\n",
            "Step [190/2000], Content Loss: 18.8180, Style Loss: 27.5357\n",
            "Step [200/2000], Content Loss: 18.9544, Style Loss: 26.7601\n",
            "Step [210/2000], Content Loss: 19.0832, Style Loss: 26.0426\n",
            "Step [220/2000], Content Loss: 19.2034, Style Loss: 25.3761\n",
            "Step [230/2000], Content Loss: 19.3169, Style Loss: 24.7564\n",
            "Step [240/2000], Content Loss: 19.4233, Style Loss: 24.1763\n",
            "Step [250/2000], Content Loss: 19.5246, Style Loss: 23.6307\n",
            "Step [260/2000], Content Loss: 19.6220, Style Loss: 23.1163\n",
            "Step [270/2000], Content Loss: 19.7135, Style Loss: 22.6295\n",
            "Step [280/2000], Content Loss: 19.7999, Style Loss: 22.1687\n",
            "Step [290/2000], Content Loss: 19.8843, Style Loss: 21.7310\n",
            "Step [300/2000], Content Loss: 19.9647, Style Loss: 21.3141\n",
            "Step [310/2000], Content Loss: 20.0435, Style Loss: 20.9156\n",
            "Step [320/2000], Content Loss: 20.1180, Style Loss: 20.5338\n",
            "Step [330/2000], Content Loss: 20.1912, Style Loss: 20.1682\n",
            "Step [340/2000], Content Loss: 20.2606, Style Loss: 19.8173\n",
            "Step [350/2000], Content Loss: 20.3292, Style Loss: 19.4793\n",
            "Step [360/2000], Content Loss: 20.3962, Style Loss: 19.1533\n",
            "Step [370/2000], Content Loss: 20.4593, Style Loss: 18.8386\n",
            "Step [380/2000], Content Loss: 20.5228, Style Loss: 18.5344\n",
            "Step [390/2000], Content Loss: 20.5849, Style Loss: 18.2399\n",
            "Step [400/2000], Content Loss: 20.6418, Style Loss: 17.9548\n",
            "Step [410/2000], Content Loss: 20.6960, Style Loss: 17.6782\n",
            "Step [420/2000], Content Loss: 20.7500, Style Loss: 17.4094\n",
            "Step [430/2000], Content Loss: 20.8016, Style Loss: 17.1479\n",
            "Step [440/2000], Content Loss: 20.8518, Style Loss: 16.8934\n",
            "Step [450/2000], Content Loss: 20.9023, Style Loss: 16.6454\n",
            "Step [460/2000], Content Loss: 20.9528, Style Loss: 16.4037\n",
            "Step [470/2000], Content Loss: 21.0032, Style Loss: 16.1682\n",
            "Step [480/2000], Content Loss: 21.0508, Style Loss: 15.9384\n",
            "Step [490/2000], Content Loss: 21.0976, Style Loss: 15.7141\n",
            "Step [500/2000], Content Loss: 21.1428, Style Loss: 15.4950\n",
            "Step [510/2000], Content Loss: 21.1857, Style Loss: 15.2809\n",
            "Step [520/2000], Content Loss: 21.2287, Style Loss: 15.0713\n",
            "Step [530/2000], Content Loss: 21.2703, Style Loss: 14.8663\n",
            "Step [540/2000], Content Loss: 21.3115, Style Loss: 14.6656\n",
            "Step [550/2000], Content Loss: 21.3527, Style Loss: 14.4691\n",
            "Step [560/2000], Content Loss: 21.3937, Style Loss: 14.2768\n",
            "Step [570/2000], Content Loss: 21.4336, Style Loss: 14.0885\n",
            "Step [580/2000], Content Loss: 21.4721, Style Loss: 13.9039\n",
            "Step [590/2000], Content Loss: 21.5098, Style Loss: 13.7229\n",
            "Step [600/2000], Content Loss: 21.5465, Style Loss: 13.5454\n",
            "Step [610/2000], Content Loss: 21.5808, Style Loss: 13.3713\n",
            "Step [620/2000], Content Loss: 21.6143, Style Loss: 13.2006\n",
            "Step [630/2000], Content Loss: 21.6479, Style Loss: 13.0332\n",
            "Step [640/2000], Content Loss: 21.6799, Style Loss: 12.8689\n",
            "Step [650/2000], Content Loss: 21.7107, Style Loss: 12.7076\n",
            "Step [660/2000], Content Loss: 21.7405, Style Loss: 12.5492\n",
            "Step [670/2000], Content Loss: 21.7706, Style Loss: 12.3937\n",
            "Step [680/2000], Content Loss: 21.7993, Style Loss: 12.2407\n",
            "Step [690/2000], Content Loss: 21.8282, Style Loss: 12.0905\n",
            "Step [700/2000], Content Loss: 21.8573, Style Loss: 11.9427\n",
            "Step [710/2000], Content Loss: 21.8854, Style Loss: 11.7975\n",
            "Step [720/2000], Content Loss: 21.9138, Style Loss: 11.6548\n",
            "Step [730/2000], Content Loss: 21.9426, Style Loss: 11.5144\n",
            "Step [740/2000], Content Loss: 21.9683, Style Loss: 11.3762\n",
            "Step [750/2000], Content Loss: 21.9942, Style Loss: 11.2404\n",
            "Step [760/2000], Content Loss: 22.0190, Style Loss: 11.1068\n",
            "Step [770/2000], Content Loss: 22.0433, Style Loss: 10.9753\n",
            "Step [780/2000], Content Loss: 22.0669, Style Loss: 10.8460\n",
            "Step [790/2000], Content Loss: 22.0903, Style Loss: 10.7186\n",
            "Step [800/2000], Content Loss: 22.1131, Style Loss: 10.5931\n",
            "Step [810/2000], Content Loss: 22.1369, Style Loss: 10.4695\n",
            "Step [820/2000], Content Loss: 22.1603, Style Loss: 10.3479\n",
            "Step [830/2000], Content Loss: 22.1819, Style Loss: 10.2281\n",
            "Step [840/2000], Content Loss: 22.2035, Style Loss: 10.1101\n",
            "Step [850/2000], Content Loss: 22.2236, Style Loss: 9.9938\n",
            "Step [860/2000], Content Loss: 22.2441, Style Loss: 9.8793\n",
            "Step [870/2000], Content Loss: 22.2645, Style Loss: 9.7664\n",
            "Step [880/2000], Content Loss: 22.2860, Style Loss: 9.6553\n",
            "Step [890/2000], Content Loss: 22.3043, Style Loss: 9.5456\n",
            "Step [900/2000], Content Loss: 22.3224, Style Loss: 9.4375\n",
            "Step [910/2000], Content Loss: 22.3408, Style Loss: 9.3310\n",
            "Step [920/2000], Content Loss: 22.3566, Style Loss: 9.2260\n",
            "Step [930/2000], Content Loss: 22.3738, Style Loss: 9.1224\n",
            "Step [940/2000], Content Loss: 22.3895, Style Loss: 9.0202\n",
            "Step [950/2000], Content Loss: 22.4057, Style Loss: 8.9195\n",
            "Step [960/2000], Content Loss: 22.4238, Style Loss: 8.8203\n",
            "Step [970/2000], Content Loss: 22.4367, Style Loss: 8.7223\n",
            "Step [980/2000], Content Loss: 22.4521, Style Loss: 8.6257\n",
            "Step [990/2000], Content Loss: 22.4655, Style Loss: 8.5304\n",
            "Step [1000/2000], Content Loss: 22.4815, Style Loss: 8.4366\n",
            "Step [1010/2000], Content Loss: 22.4954, Style Loss: 8.3439\n",
            "Step [1020/2000], Content Loss: 22.5114, Style Loss: 8.2525\n",
            "Step [1030/2000], Content Loss: 22.5250, Style Loss: 8.1622\n",
            "Step [1040/2000], Content Loss: 22.5401, Style Loss: 8.0732\n",
            "Step [1050/2000], Content Loss: 22.5562, Style Loss: 7.9854\n",
            "Step [1060/2000], Content Loss: 22.5657, Style Loss: 7.8986\n",
            "Step [1070/2000], Content Loss: 22.5808, Style Loss: 7.8131\n",
            "Step [1080/2000], Content Loss: 22.5916, Style Loss: 7.7287\n",
            "Step [1090/2000], Content Loss: 22.6043, Style Loss: 7.6454\n",
            "Step [1100/2000], Content Loss: 22.6162, Style Loss: 7.5632\n",
            "Step [1110/2000], Content Loss: 22.6292, Style Loss: 7.4821\n",
            "Step [1120/2000], Content Loss: 22.6440, Style Loss: 7.4020\n",
            "Step [1130/2000], Content Loss: 22.6530, Style Loss: 7.3228\n",
            "Step [1140/2000], Content Loss: 22.6677, Style Loss: 7.2449\n",
            "Step [1150/2000], Content Loss: 22.6777, Style Loss: 7.1678\n",
            "Step [1160/2000], Content Loss: 22.6914, Style Loss: 7.0918\n",
            "Step [1170/2000], Content Loss: 22.7007, Style Loss: 7.0167\n",
            "Step [1180/2000], Content Loss: 22.7092, Style Loss: 6.9425\n",
            "Step [1190/2000], Content Loss: 22.7239, Style Loss: 6.8695\n",
            "Step [1200/2000], Content Loss: 22.7270, Style Loss: 6.7969\n",
            "Step [1210/2000], Content Loss: 22.7464, Style Loss: 6.7259\n",
            "Step [1220/2000], Content Loss: 22.7513, Style Loss: 6.6552\n",
            "Step [1230/2000], Content Loss: 22.7654, Style Loss: 6.5858\n",
            "Step [1240/2000], Content Loss: 22.7794, Style Loss: 6.5172\n",
            "Step [1250/2000], Content Loss: 22.7808, Style Loss: 6.4491\n",
            "Step [1260/2000], Content Loss: 22.8054, Style Loss: 6.3828\n",
            "Step [1270/2000], Content Loss: 22.7944, Style Loss: 6.3158\n",
            "Step [1280/2000], Content Loss: 22.8328, Style Loss: 6.2519\n",
            "Step [1290/2000], Content Loss: 22.8111, Style Loss: 6.1858\n",
            "Step [1300/2000], Content Loss: 22.8535, Style Loss: 6.1239\n",
            "Step [1310/2000], Content Loss: 22.8290, Style Loss: 6.0591\n",
            "Step [1320/2000], Content Loss: 22.8746, Style Loss: 5.9990\n",
            "Step [1330/2000], Content Loss: 22.8406, Style Loss: 5.9353\n",
            "Step [1340/2000], Content Loss: 22.9086, Style Loss: 5.8783\n",
            "Step [1350/2000], Content Loss: 22.8464, Style Loss: 5.8144\n",
            "Step [1360/2000], Content Loss: 22.9397, Style Loss: 5.7607\n",
            "Step [1370/2000], Content Loss: 22.8534, Style Loss: 5.6967\n",
            "Step [1380/2000], Content Loss: 22.8085, Style Loss: 5.6417\n",
            "Step [1390/2000], Content Loss: 22.8494, Style Loss: 5.5824\n",
            "Step [1400/2000], Content Loss: 22.8721, Style Loss: 5.5252\n",
            "Step [1410/2000], Content Loss: 22.7710, Style Loss: 5.4811\n",
            "Step [1420/2000], Content Loss: 22.9087, Style Loss: 5.4143\n",
            "Step [1430/2000], Content Loss: 22.9667, Style Loss: 5.3620\n",
            "Step [1440/2000], Content Loss: 22.9327, Style Loss: 5.3060\n",
            "Step [1450/2000], Content Loss: 22.9899, Style Loss: 5.2556\n",
            "Step [1460/2000], Content Loss: 22.9398, Style Loss: 5.2002\n",
            "Step [1470/2000], Content Loss: 22.9908, Style Loss: 5.1499\n",
            "Step [1480/2000], Content Loss: 22.9686, Style Loss: 5.0974\n",
            "Step [1490/2000], Content Loss: 22.9272, Style Loss: 5.0469\n",
            "Step [1500/2000], Content Loss: 22.8839, Style Loss: 5.0014\n",
            "Step [1510/2000], Content Loss: 22.9584, Style Loss: 4.9466\n",
            "Step [1520/2000], Content Loss: 22.8621, Style Loss: 4.9084\n",
            "Step [1530/2000], Content Loss: 22.9921, Style Loss: 4.8492\n",
            "Step [1540/2000], Content Loss: 23.0497, Style Loss: 4.8033\n",
            "Step [1550/2000], Content Loss: 23.0270, Style Loss: 4.7545\n",
            "Step [1560/2000], Content Loss: 23.0491, Style Loss: 4.7082\n",
            "Step [1570/2000], Content Loss: 23.0815, Style Loss: 4.6642\n",
            "Step [1580/2000], Content Loss: 23.0056, Style Loss: 4.6161\n",
            "Step [1590/2000], Content Loss: 22.9372, Style Loss: 4.5782\n",
            "Step [1600/2000], Content Loss: 23.0334, Style Loss: 4.5262\n",
            "Step [1610/2000], Content Loss: 22.9787, Style Loss: 4.4859\n",
            "Step [1620/2000], Content Loss: 23.0251, Style Loss: 4.4401\n",
            "Step [1630/2000], Content Loss: 23.0671, Style Loss: 4.3958\n",
            "Step [1640/2000], Content Loss: 23.1289, Style Loss: 4.3558\n",
            "Step [1650/2000], Content Loss: 23.0880, Style Loss: 4.3113\n",
            "Step [1660/2000], Content Loss: 23.1416, Style Loss: 4.2722\n",
            "Step [1670/2000], Content Loss: 23.1055, Style Loss: 4.2291\n",
            "Step [1680/2000], Content Loss: 23.0644, Style Loss: 4.1887\n",
            "Step [1690/2000], Content Loss: 22.9751, Style Loss: 4.1600\n",
            "Step [1700/2000], Content Loss: 23.1126, Style Loss: 4.1084\n",
            "Step [1710/2000], Content Loss: 23.1834, Style Loss: 4.0729\n",
            "Step [1720/2000], Content Loss: 23.1272, Style Loss: 4.0307\n",
            "Step [1730/2000], Content Loss: 23.1569, Style Loss: 3.9930\n",
            "Step [1740/2000], Content Loss: 23.2297, Style Loss: 3.9624\n",
            "Step [1750/2000], Content Loss: 23.1182, Style Loss: 3.9175\n",
            "Step [1760/2000], Content Loss: 23.0758, Style Loss: 3.8834\n",
            "Step [1770/2000], Content Loss: 23.1020, Style Loss: 3.8454\n",
            "Step [1780/2000], Content Loss: 23.1179, Style Loss: 3.8085\n",
            "Step [1790/2000], Content Loss: 23.0141, Style Loss: 3.7879\n",
            "Step [1800/2000], Content Loss: 23.1677, Style Loss: 3.7370\n",
            "Step [1810/2000], Content Loss: 23.2157, Style Loss: 3.7037\n",
            "Step [1820/2000], Content Loss: 23.2089, Style Loss: 3.6687\n",
            "Step [1830/2000], Content Loss: 23.1907, Style Loss: 3.6335\n",
            "Step [1840/2000], Content Loss: 23.3397, Style Loss: 3.6189\n",
            "Step [1850/2000], Content Loss: 23.1698, Style Loss: 3.5671\n",
            "Step [1860/2000], Content Loss: 23.1585, Style Loss: 3.5345\n",
            "Step [1870/2000], Content Loss: 23.0881, Style Loss: 3.5102\n",
            "Step [1880/2000], Content Loss: 23.1991, Style Loss: 3.4691\n",
            "Step [1890/2000], Content Loss: 23.3018, Style Loss: 3.4441\n",
            "Step [1900/2000], Content Loss: 23.1953, Style Loss: 3.4068\n",
            "Step [1910/2000], Content Loss: 23.2025, Style Loss: 3.3751\n",
            "Step [1920/2000], Content Loss: 23.1423, Style Loss: 3.3488\n",
            "Step [1930/2000], Content Loss: 23.1873, Style Loss: 3.3153\n",
            "Step [1940/2000], Content Loss: 23.2417, Style Loss: 3.2841\n",
            "Step [1950/2000], Content Loss: 23.3802, Style Loss: 3.2708\n",
            "Step [1960/2000], Content Loss: 23.2177, Style Loss: 3.2257\n",
            "Step [1970/2000], Content Loss: 23.2015, Style Loss: 3.1974\n",
            "Step [1980/2000], Content Loss: 23.1456, Style Loss: 3.1755\n",
            "Step [1990/2000], Content Loss: 23.2437, Style Loss: 3.1393\n",
            "Step [2000/2000], Content Loss: 23.2732, Style Loss: 3.1114\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "GM_zrtE87Ztr",
        "colab_type": "code",
        "outputId": "b01c5bbd-29fb-4c88-c43c-e4902ea8dc90",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "!python ./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/main.py --content='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/content.png'  --style='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/style3.png'"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Namespace(content='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/content.png', log_step=10, lr=0.003, max_size=400, sample_step=500, style='./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/png/style3.png', style_weight=100, total_step=2000)\n",
            "Step [10/2000], Content Loss: 2.6140, Style Loss: 146.3325\n",
            "Step [20/2000], Content Loss: 5.1191, Style Loss: 109.2023\n",
            "Traceback (most recent call last):\n",
            "  File \"./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/main.py\", line 126, in <module>\n",
            "    main(config)\n",
            "  File \"./pytorch-tutorial/tutorials/03-advanced/neural_style_transfer/main.py\", line 99, in main\n",
            "    loss.backward()\n",
            "  File \"/usr/local/lib/python3.6/dist-packages/torch/tensor.py\", line 118, in backward\n",
            "    torch.autograd.backward(self, gradient, retain_graph, create_graph)\n",
            "  File \"/usr/local/lib/python3.6/dist-packages/torch/autograd/__init__.py\", line 93, in backward\n",
            "    allow_unreachable=True)  # allow_unreachable flag\n",
            "KeyboardInterrupt\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "44VQ2AIIoak2",
        "colab_type": "text"
      },
      "source": [
        "# 8"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OMVfxJPnDqn2",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ZP-HTvFjG4E_",
        "colab_type": "code",
        "outputId": "46409511-9c58-4c49-acf0-cf44c72f5fc4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "torch.__version__"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'1.3.0+cu100'"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 2
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "603WGEPyG6lA",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zWZ757q9Hd6Y",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from __future__ import print_function \n",
        "import torch "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "suZmBgf9Hj_b",
        "colab_type": "code",
        "outputId": "4916e147-3d9c-470c-ec86-3050b21a1543",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "x = torch.empty(5, 3)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[4.6024e-36, 0.0000e+00, 0.0000e+00],\n",
            "        [0.0000e+00, 0.0000e+00, 0.0000e+00],\n",
            "        [0.0000e+00, 0.0000e+00, 2.8026e-45],\n",
            "        [0.0000e+00, 1.1210e-44, 0.0000e+00],\n",
            "        [1.4013e-45, 0.0000e+00, 0.0000e+00]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HIX6U1YsHrrq",
        "colab_type": "code",
        "outputId": "7fb016e9-1546-4a01-acb0-69ad3fe0f22f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "x = torch.rand(5, 3)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[0.4676, 0.1340, 0.6365],\n",
            "        [0.7461, 0.1219, 0.6578],\n",
            "        [0.8245, 0.4888, 0.5925],\n",
            "        [0.4426, 0.8526, 0.2374],\n",
            "        [0.8673, 0.0093, 0.2972]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rc1MPPpSHyVA",
        "colab_type": "code",
        "outputId": "95e7307e-f514-49df-806c-b9c70903395b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "x = torch.zeros(5, 3, dtype=torch.long)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[0, 0, 0],\n",
            "        [0, 0, 0],\n",
            "        [0, 0, 0],\n",
            "        [0, 0, 0],\n",
            "        [0, 0, 0]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KAYiku2UH5do",
        "colab_type": "code",
        "outputId": "47720295-b6fc-4b80-b6b6-75b5a6f9bbde",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "x = torch.tensor([5.5, 3])\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([5.5000, 3.0000])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8GjpgRxTIAxw",
        "colab_type": "code",
        "outputId": "b0668672-ad70-4696-f00a-bd5bc586ddfe",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "x = x.new_ones(5, 3, dtype=torch.double)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.]], dtype=torch.float64)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JaCS1iuEIIEO",
        "colab_type": "code",
        "outputId": "0084c6a6-06bb-4c2e-a258-dc3b122f6d09",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "x = torch.randn_like(x, dtype=torch.float)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[-0.5479,  1.2288, -0.9941],\n",
            "        [ 2.5916,  1.0550, -0.2982],\n",
            "        [-0.8178, -1.8463,  0.1055],\n",
            "        [ 0.9756, -0.1240,  1.4059],\n",
            "        [-0.2842,  0.0840, -0.7878]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uMeFCxU8IaRJ",
        "colab_type": "code",
        "outputId": "ea983f4c-46f0-459d-8664-564c6380bf5e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(x.size())"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "torch.Size([5, 3])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KPgELOINIhDR",
        "colab_type": "code",
        "outputId": "ff95a76b-dbf9-4a2b-d62e-3176674a0485",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "y = torch.rand(5, 3)\n",
        "print(x + y)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.0490,  1.3681, -0.1916],\n",
            "        [ 3.0397,  1.1281, -0.1447],\n",
            "        [ 0.1274, -1.2173,  0.9539],\n",
            "        [ 1.6774,  0.1409,  2.1909],\n",
            "        [ 0.3377,  0.4043, -0.5149]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6m5msIFEInch",
        "colab_type": "code",
        "outputId": "37ab8830-0f69-48cd-f9de-28de52b7b3df",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "print(torch.add(x, y))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.0490,  1.3681, -0.1916],\n",
            "        [ 3.0397,  1.1281, -0.1447],\n",
            "        [ 0.1274, -1.2173,  0.9539],\n",
            "        [ 1.6774,  0.1409,  2.1909],\n",
            "        [ 0.3377,  0.4043, -0.5149]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XRFu6R4dIrEx",
        "colab_type": "code",
        "outputId": "61b54ec3-5afa-440b-e09b-d37317e75bcf",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "result = torch.empty(5, 3)\n",
        "torch.add(x, y, out=result)\n",
        "print(result)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.0490,  1.3681, -0.1916],\n",
            "        [ 3.0397,  1.1281, -0.1447],\n",
            "        [ 0.1274, -1.2173,  0.9539],\n",
            "        [ 1.6774,  0.1409,  2.1909],\n",
            "        [ 0.3377,  0.4043, -0.5149]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xITdzo2NI3jB",
        "colab_type": "code",
        "outputId": "ff4e6f97-cddc-4a5f-d855-30b221176d50",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 193
        }
      },
      "source": [
        "print(y)\n",
        "y.add_(x)\n",
        "print(y)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.0490,  1.3681, -0.1916],\n",
            "        [ 3.0397,  1.1281, -0.1447],\n",
            "        [ 0.1274, -1.2173,  0.9539],\n",
            "        [ 1.6774,  0.1409,  2.1909],\n",
            "        [ 0.3377,  0.4043, -0.5149]])\n",
            "tensor([[-0.4989,  2.5969, -1.1858],\n",
            "        [ 5.6313,  2.1832, -0.4428],\n",
            "        [-0.6904, -3.0636,  1.0594],\n",
            "        [ 2.6530,  0.0169,  3.5968],\n",
            "        [ 0.0536,  0.4883, -1.3027]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LpD5jogHJiX5",
        "colab_type": "code",
        "outputId": "71129e12-4e34-46de-b399-60f9303b32c8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 105
        }
      },
      "source": [
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[-0.5479,  1.2288, -0.9941],\n",
            "        [ 2.5916,  1.0550, -0.2982],\n",
            "        [-0.8178, -1.8463,  0.1055],\n",
            "        [ 0.9756, -0.1240,  1.4059],\n",
            "        [-0.2842,  0.0840, -0.7878]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JsKsymp6KQnO",
        "colab_type": "code",
        "outputId": "a398bec2-34c6-4171-fbeb-69efd63e5926",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(x[:, 1])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([ 1.2288,  1.0550, -1.8463, -0.1240,  0.0840])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "MCYUZ_y8KToh",
        "colab_type": "code",
        "outputId": "b340f605-591d-420b-9b24-f34433697234",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "x = torch.randn(4, 4)\n",
        "y = x.view(16)\n",
        "z = x.view(-1, 8)\n",
        "print(x.size(), y.size(), z.size())"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Jb4g9uZVKp43",
        "colab_type": "code",
        "outputId": "b25f4db4-7132-4409-accf-038db28d653d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 87
        }
      },
      "source": [
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.5960, -0.2749,  0.0981,  1.1148],\n",
            "        [-2.3957,  0.4872,  1.1043,  1.4925],\n",
            "        [-0.2685, -0.9455, -0.8301,  0.1530],\n",
            "        [ 0.0690,  0.3921, -0.0575,  0.7194]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DjEa6R_eK08r",
        "colab_type": "code",
        "outputId": "a4832044-6e89-4106-f57a-96fa37c14676",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 169
        }
      },
      "source": [
        "print(x.item())"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "ValueError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-21-95a4debbca18>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;31mValueError\u001b[0m: only one element tensors can be converted to Python scalars"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AyE-qknjK3YB",
        "colab_type": "code",
        "outputId": "4c4a9927-09c9-4d0d-c305-136d78e096d1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "x = torch.randn(1)\n",
        "print(x)\n",
        "print(x.item())"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([-1.0633])\n",
            "-1.063294529914856\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ee_no4S8LBth",
        "colab_type": "code",
        "outputId": "941c7a8f-63a3-4970-c1e6-69421be74db1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 70
        }
      },
      "source": [
        "x =torch.ones(3, 4)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[1., 1., 1., 1.],\n",
            "        [1., 1., 1., 1.],\n",
            "        [1., 1., 1., 1.]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "MUoUt-r-LPcE",
        "colab_type": "code",
        "outputId": "d523dec3-3f60-4552-d868-62ee9cafcbf9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 70
        }
      },
      "source": [
        "y = torch.zeros_like(x)\n",
        "print(y)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[0., 0., 0., 0.],\n",
            "        [0., 0., 0., 0.],\n",
            "        [0., 0., 0., 0.]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7dIOuIWwLVBq",
        "colab_type": "code",
        "outputId": "7ce62e9a-84d1-4506-a3f7-ccdad42ea9cb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "a = torch.ones(5)\n",
        "print(a)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([1., 1., 1., 1., 1.])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2P4SEyCnMT36",
        "colab_type": "code",
        "outputId": "f9108de2-00e2-477c-dd32-903cf4c183ab",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "b = a.numpy()\n",
        "print(b)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[1. 1. 1. 1. 1.]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "f5wrBZqeMa2S",
        "colab_type": "code",
        "outputId": "35d8e662-9248-40fc-ca35-791bbfd20b07",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "a.add_(1)\n",
        "print(a)\n",
        "print(b)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([2., 2., 2., 2., 2.])\n",
            "[2. 2. 2. 2. 2.]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tMNEjJyMMhOr",
        "colab_type": "code",
        "outputId": "b0d31225-e9d2-43a9-fcfa-7741580455fb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "c = torch.tensor(b)\n",
        "print(c)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([2., 2., 2., 2., 2.])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s9z8PBlzMzSS",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uYJSGErdN5gK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "a = np.ones(5)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tnzTJGUkN860",
        "colab_type": "code",
        "outputId": "7f9e92af-3f17-4d00-cb27-711db9c3236a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(a)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[1. 1. 1. 1. 1.]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LQrlmKT4N-Bz",
        "colab_type": "code",
        "outputId": "adcddcd8-c23c-464f-b096-72f410def1cb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "b = torch.from_numpy(a)\n",
        "print(b)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([1., 1., 1., 1., 1.], dtype=torch.float64)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "sf7TSrsAOC7V",
        "colab_type": "code",
        "outputId": "6518d9ba-a722-4fb2-d7de-6e22ac865253",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "np.add(a, 1, out=a)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([2., 2., 2., 2., 2.])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 36
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YoaVee3IONwD",
        "colab_type": "code",
        "outputId": "0180e6da-c3cc-4975-e76c-8b28a4560611",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(a)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[2. 2. 2. 2. 2.]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vRSh46E0OQET",
        "colab_type": "code",
        "outputId": "1226f3aa-b683-462e-f286-b35a6a9dd2eb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(b)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([2., 2., 2., 2., 2.], dtype=torch.float64)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "I4LjLVPUORj6",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "if torch.cuda.is_available():\n",
        "    device = torch.device('cuda')\n",
        "    y = torch.ones_like(x, device=device)\n",
        "    x = x.to(device)\n",
        "    z = x + y \n",
        "    print(z)\n",
        "    print(z.to('cpu', torch.double))"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "NjVhiJZZPvtb",
        "colab_type": "text"
      },
      "source": [
        "# 9"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7Jo0kKZFiuT3",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F5fuDjSeizSh",
        "colab_type": "code",
        "outputId": "46d2122d-920d-4d88-9b16-21a5cc2d4167",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "x = torch.ones(2, 2, requires_grad=True)\n",
        "print(x)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[1., 1.],\n",
            "        [1., 1.]], requires_grad=True)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4EZQ8XfQi6Mw",
        "colab_type": "code",
        "outputId": "c5914102-865a-4f92-fe63-6b2a9f642fad",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "y = x + 2 \n",
        "print(y)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[3., 3.],\n",
            "        [3., 3.]], grad_fn=<AddBackward0>)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0x6h3oJ6jMUw",
        "colab_type": "code",
        "outputId": "87cfd0f5-f905-419b-90c1-fec2bfbd6a3a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(y.grad_fn)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "<AddBackward0 object at 0x7f02d8291be0>\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eakOmg52jT4I",
        "colab_type": "code",
        "outputId": "1afc1947-2fd6-4b74-df82-8db7359bfc0b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "z = y * y * 3 \n",
        "print(z)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[27., 27.],\n",
            "        [27., 27.]], grad_fn=<MulBackward0>)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EKXL2XUMjZ0w",
        "colab_type": "code",
        "outputId": "2b140105-63df-4a13-812f-e9994fe42a7c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "out = z.mean()\n",
        "print(out)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor(27., grad_fn=<MeanBackward0>)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tpo2U2D4jeA4",
        "colab_type": "code",
        "outputId": "7b10c30d-713b-4459-a468-74a27dc864f9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "a = torch.randn(2, 2)\n",
        "print(a)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[ 0.0082,  0.2534],\n",
            "        [-1.9240, -1.5676]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M9XdhZTJjpFX",
        "colab_type": "code",
        "outputId": "cda05831-6923-4946-b5a0-0550d5bc06fa",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "a = ((a * 3) / (a - 1))\n",
        "print(a.requires_grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "False\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OwH1Ryt7jy9g",
        "colab_type": "code",
        "outputId": "23121646-2b09-49d2-d20e-ca482ba5d349",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "a.requires_grad_(True)\n",
        "print(a.requires_grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "True\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M8GjB7qcj_Ax",
        "colab_type": "code",
        "outputId": "421faba6-013f-4ce8-b849-0617ffee2b87",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "b = (a * a).sum()\n",
        "print(b.grad_fn)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "<SumBackward0 object at 0x7f02d829cb00>\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OPMHUU67kFl5",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "out.backward()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3kqGcb_ykMqw",
        "colab_type": "code",
        "outputId": "df2ee1e2-d07a-4952-9048-44a1f3588d91",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "source": [
        "print(x.grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([[4.5000, 4.5000],\n",
            "        [4.5000, 4.5000]])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tp8VcivdkPhA",
        "colab_type": "code",
        "outputId": "12ae3e40-a335-412d-9483-853eff07c3bb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "x = torch.randn(3, requires_grad=True)\n",
        "\n",
        "y = x * 2 \n",
        "while y.data.norm() < 1000:\n",
        "    y = y * 2 \n",
        "\n",
        "print(y)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([1377.1154,  304.6030, 1172.8605], grad_fn=<MulBackward0>)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FDQ076N4kmFq",
        "colab_type": "code",
        "outputId": "30fc6902-c6f7-4dc8-fd32-4c4bc384bf03",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "gradients = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)\n",
        "y.backward(gradients)\n",
        "\n",
        "print(x.grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "tensor([1.0240e+02, 1.0240e+03, 1.0240e-01])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3fihHJl1lAFZ",
        "colab_type": "code",
        "outputId": "7c5b78a8-ba97-4e09-f728-6879874e945e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print(x.requires_grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "True\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LaUxNBATlI8K",
        "colab_type": "code",
        "outputId": "46ea8eb0-8535-453c-95c4-15cc1450a21b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print((x ** 2).requires_grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "True\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wq1x5p9SlNmZ",
        "colab_type": "code",
        "outputId": "b6b80de9-1ef7-4814-9827-26aebf56bf98",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "with torch.no_grad():\n",
        "    print((x ** 2).requires_grad)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "False\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mgBeO_AelYLw",
        "colab_type": "text"
      },
      "source": [
        "# 10"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ugm3X2gIrIkf",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4cSfR9H5W5lC",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import gym"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "prn950UCW9OP",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np \n",
        "np.random.seed(0)\n",
        "import pandas as pd "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OA3dBGKqXGMM",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "space_names = ['观测空间','动作空间','奖励范围','最大步数']\n",
        "df = pd.DataFrame(columns=space_names)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "saRSekq6Xg4B",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "env_specs = gym.envs.registry.all()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "X1ayz4xVXo6n",
        "colab_type": "code",
        "outputId": "d0bf758d-d949-4726-eef7-4c4c055731c9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 526
        }
      },
      "source": [
        "for env_spec in env_specs:\n",
        "    env_id = env_spec.id\n",
        "    env = gym.make(env_id)\n",
        "    observation_space = env.observation_space \n",
        "    action_space = env.action_space \n",
        "    reward_range = env.reward_range \n",
        "    max_episode_steps = None \n",
        "    if isinstance(env, gym.wrappers.time_limit.TimeLimit):\n",
        "        max_episode_steps = env._max_episode_steps \n",
        "    df.loc[env_id] = [observation_space, action_space, reward_range, max_episode_steps]\n",
        "\n",
        "with pd.option_context('display.max_rows', None):\n",
        "    display(df)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "ModuleNotFoundError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-12-88f86853b4ed>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0menv_spec\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menv_specs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0menv_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0menv_spec\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m     \u001b[0menv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0menv_id\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m     \u001b[0mobservation_space\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobservation_space\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0maction_space\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maction_space\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/registration.py\u001b[0m in \u001b[0;36mmake\u001b[0;34m(id, **kwargs)\u001b[0m\n\u001b[1;32m    169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    170\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mregistry\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    172\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    173\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mspec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/registration.py\u001b[0m in \u001b[0;36mmake\u001b[0;34m(self, id, **kwargs)\u001b[0m\n\u001b[1;32m    121\u001b[0m             \u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Making new env: %s'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    122\u001b[0m         \u001b[0mspec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 123\u001b[0;31m         \u001b[0menv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mspec\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    124\u001b[0m         \u001b[0;31m# We used to have people override _reset/_step rather than\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    125\u001b[0m         \u001b[0;31m# reset/step. Set _gym_disable_underscore_compat = True on\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/registration.py\u001b[0m in \u001b[0;36mmake\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m     84\u001b[0m             \u001b[0menv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_entry_point\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     85\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 86\u001b[0;31m             \u001b[0mcls\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_entry_point\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     87\u001b[0m             \u001b[0menv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     88\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/registration.py\u001b[0m in \u001b[0;36mload\u001b[0;34m(name)\u001b[0m\n\u001b[1;32m     12\u001b[0m     \u001b[0;32mimport\u001b[0m \u001b[0mpkg_resources\u001b[0m \u001b[0;31m# takes ~400ms to load, so we import it lazily\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     13\u001b[0m     \u001b[0mentry_point\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpkg_resources\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mEntryPoint\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'x={}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m     \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mentry_point\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresolve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     15\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py\u001b[0m in \u001b[0;36mresolve\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   2447\u001b[0m         \u001b[0mResolve\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mentry\u001b[0m \u001b[0mpoint\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mits\u001b[0m \u001b[0mmodule\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2448\u001b[0m         \"\"\"\n\u001b[0;32m-> 2449\u001b[0;31m         \u001b[0mmodule\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m__import__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodule_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfromlist\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'__name__'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2450\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2451\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunctools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduce\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgetattr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodule\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/box2d/__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menvs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbox2d\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlunar_lander\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLunarLander\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menvs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbox2d\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlunar_lander\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLunarLanderContinuous\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menvs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbox2d\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbipedal_walker\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBipedalWalker\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBipedalWalkerHardcore\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menvs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbox2d\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcar_racing\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCarRacing\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/box2d/lunar_lander.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mBox2D\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mBox2D\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mb2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0medgeShape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcircleShape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfixtureDef\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpolygonShape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrevoluteJointDef\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontactListener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'Box2D'",
            "",
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0;32m\nNOTE: If your import is failing due to a missing package, you can\nmanually install dependencies using either !pip or !apt.\n\nTo view examples of installing some common dependencies, click the\n\"Open Examples\" button below.\n\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PXr7hhIKZIGm",
        "colab_type": "code",
        "outputId": "34896f93-101a-435e-a782-79587200dd02",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "space_names = ['观测空间', '动作空间', '奖励范围', '最大步数']\n",
        "df = pd.DataFrame(columns=space_names)\n",
        "\n",
        "env_specs = gym.envs.registry.all()\n",
        "for env_spec in env_specs:\n",
        "    env_id = env_spec.id\n",
        "    try:\n",
        "        env = gym.make(env_id)\n",
        "        observation_space = env.observation_space\n",
        "        action_space = env.action_space\n",
        "        reward_range = env.reward_range\n",
        "        max_episode_steps = None\n",
        "        if isinstance(env, gym.wrappers.time_limit.TimeLimit):\n",
        "            max_episode_steps = env._max_episode_steps\n",
        "        df.loc[env_id] = [observation_space, action_space, reward_range, max_episode_steps]\n",
        "    except:\n",
        "        pass\n",
        "\n",
        "with pd.option_context('display.max_rows', None):\n",
        "    display(df)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>观测空间</th>\n",
              "      <th>动作空间</th>\n",
              "      <th>奖励范围</th>\n",
              "      <th>最大步数</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>Copy-v0</th>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>Tuple(Discrete(2), Discrete(2), Discrete(5))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RepeatCopy-v0</th>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>Tuple(Discrete(2), Discrete(2), Discrete(5))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ReversedAddition-v0</th>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>Tuple(Discrete(4), Discrete(2), Discrete(3))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ReversedAddition3-v0</th>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>Tuple(Discrete(4), Discrete(2), Discrete(3))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DuplicatedInput-v0</th>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>Tuple(Discrete(2), Discrete(2), Discrete(5))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Reverse-v0</th>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>Tuple(Discrete(2), Discrete(2), Discrete(2))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CartPole-v0</th>\n",
              "      <td>Box(4,)</td>\n",
              "      <td>Discrete(2)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CartPole-v1</th>\n",
              "      <td>Box(4,)</td>\n",
              "      <td>Discrete(2)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>500</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MountainCar-v0</th>\n",
              "      <td>Box(2,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MountainCarContinuous-v0</th>\n",
              "      <td>Box(2,)</td>\n",
              "      <td>Box(1,)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>999</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pendulum-v0</th>\n",
              "      <td>Box(3,)</td>\n",
              "      <td>Box(1,)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Acrobot-v1</th>\n",
              "      <td>Box(6,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>500</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Blackjack-v0</th>\n",
              "      <td>Tuple(Discrete(32), Discrete(11), Discrete(2))</td>\n",
              "      <td>Discrete(2)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KellyCoinflip-v0</th>\n",
              "      <td>Tuple(Box(1,), Discrete(301))</td>\n",
              "      <td>Discrete(25000)</td>\n",
              "      <td>(0, 250.0)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KellyCoinflipGeneralized-v0</th>\n",
              "      <td>Tuple(Box(1,), Discrete(296), Discrete(296), D...</td>\n",
              "      <td>Discrete(23300)</td>\n",
              "      <td>(0, 233.0)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrozenLake-v0</th>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(0, 1)</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrozenLake8x8-v0</th>\n",
              "      <td>Discrete(64)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(0, 1)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CliffWalking-v0</th>\n",
              "      <td>Discrete(48)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NChain-v0</th>\n",
              "      <td>Discrete(5)</td>\n",
              "      <td>Discrete(2)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>1000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Roulette-v0</th>\n",
              "      <td>Discrete(1)</td>\n",
              "      <td>Discrete(38)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Taxi-v2</th>\n",
              "      <td>Discrete(500)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GuessingGame-v0</th>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>Box(1,)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>HotterColder-v0</th>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>Box(1,)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaidDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaidDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaidNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaidNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AirRaid-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AlienDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AlienDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AlienNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AlienNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Alien-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AmidarDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AmidarDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AmidarNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AmidarNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Amidar-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AssaultDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AssaultDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AssaultNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AssaultNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Assault-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(7)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsterixDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsterixDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsterixNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsterixNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asterix-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsteroidsDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsteroidsDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsteroidsNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AsteroidsNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Asteroids-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AtlantisDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AtlantisDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AtlantisNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>AtlantisNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Atlantis-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeistDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeistDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeistNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeistNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BankHeist-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZoneDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZoneDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZoneNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZoneNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BattleZone-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRiderDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRiderDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRiderNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRiderNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BeamRider-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BerzerkDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BerzerkDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BerzerkNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BerzerkNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Berzerk-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BowlingDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BowlingDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BowlingNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BowlingNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Bowling-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BoxingDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BoxingDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BoxingNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BoxingNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Boxing-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BreakoutDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BreakoutDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BreakoutNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>BreakoutNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Breakout-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CarnivalDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CarnivalDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CarnivalNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CarnivalNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Carnival-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CentipedeDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CentipedeDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CentipedeNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CentipedeNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Centipede-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommandDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommandDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommandNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommandNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ChopperCommand-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimberDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimberDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimberNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimberNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CrazyClimber-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttackDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttackDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttackNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttackNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DemonAttack-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunkDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunkDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunkNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunkNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DoubleDunk-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorActionDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorActionDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorActionNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorActionNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ElevatorAction-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>EnduroDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>EnduroDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>EnduroNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>EnduroNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Enduro-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerbyDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerbyDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerbyNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerbyNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FishingDerby-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FreewayDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FreewayDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FreewayNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FreewayNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Freeway-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrostbiteDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrostbiteDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrostbiteNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FrostbiteNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Frostbite-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GopherDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GopherDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GopherNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GopherNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gopher-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GravitarDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GravitarDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GravitarNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>GravitarNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Gravitar-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>HeroDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>HeroDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>HeroNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>HeroNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Hero-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockeyDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockeyDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockeyNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockeyNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>IceHockey-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JamesbondDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JamesbondDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JamesbondNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JamesbondNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Jamesbond-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-v0</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-v4</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscapeDeterministic-v0</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscapeDeterministic-v4</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscapeNoFrameskip-v0</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscapeNoFrameskip-v4</th>\n",
              "      <td>Box(230, 160, 3)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>JourneyEscape-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(16)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KangarooDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KangarooDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KangarooNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KangarooNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Kangaroo-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KrullDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KrullDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KrullNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KrullNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Krull-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMasterDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMasterDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMasterNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMasterNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>KungFuMaster-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevengeDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevengeDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevengeNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevengeNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MontezumaRevenge-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacmanDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacmanDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacmanNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacmanNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MsPacman-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGameDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGameDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGameNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGameNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>NameThisGame-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PhoenixDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PhoenixDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PhoenixNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PhoenixNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Phoenix-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PitfallDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PitfallDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PitfallNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PitfallNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pitfall-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PongDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PongDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PongNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PongNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pong-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PooyanDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PooyanDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PooyanNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PooyanNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Pooyan-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEyeDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEyeDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEyeNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEyeNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PrivateEye-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>QbertDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>QbertDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>QbertNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>QbertNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Qbert-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RiverraidDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RiverraidDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RiverraidNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RiverraidNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Riverraid-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunnerDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunnerDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunnerNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunnerNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RoadRunner-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RobotankDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RobotankDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RobotankNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RobotankNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Robotank-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SeaquestDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SeaquestDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SeaquestNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SeaquestNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Seaquest-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SkiingDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SkiingDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SkiingNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SkiingNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Skiing-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SolarisDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SolarisDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SolarisNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SolarisNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Solaris-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvadersDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvadersDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvadersNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>300000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvadersNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>300000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>300000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SpaceInvaders-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>300000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunnerDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunnerDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunnerNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunnerNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>StarGunner-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TennisDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TennisDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TennisNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TennisNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tennis-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilotDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilotDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilotNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilotNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TimePilot-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TutankhamDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TutankhamDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TutankhamNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TutankhamNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Tutankham-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(8)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDownDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDownDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDownNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDownNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>UpNDown-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VentureDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VentureDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VentureNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VentureNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Venture-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinballDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinballDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinballNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinballNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>VideoPinball-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWorDeterministic-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWorDeterministic-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWorNoFrameskip-v0</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWorNoFrameskip-v4</th>\n",
              "      <td>Box(250, 160, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WizardOfWor-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevengeDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevengeDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevengeNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevengeNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>YarsRevenge-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ZaxxonDeterministic-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ZaxxonDeterministic-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ZaxxonNoFrameskip-v0</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ZaxxonNoFrameskip-v4</th>\n",
              "      <td>Box(210, 160, 3)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ram-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>10000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ram-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ramDeterministic-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ramDeterministic-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>100000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ramNoFrameskip-v0</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Zaxxon-ramNoFrameskip-v4</th>\n",
              "      <td>Box(128,)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>400000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CubeCrash-v0</th>\n",
              "      <td>Box(40, 32, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CubeCrashSparse-v0</th>\n",
              "      <td>Box(40, 32, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>CubeCrashScreenBecomesBlack-v0</th>\n",
              "      <td>Box(40, 32, 3)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>MemorizeDigits-v0</th>\n",
              "      <td>Box(24, 32, 3)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                                                   观测空间  ...    最大步数\n",
              "Copy-v0                                                                     Discrete(6)  ...     200\n",
              "RepeatCopy-v0                                                               Discrete(6)  ...     200\n",
              "ReversedAddition-v0                                                         Discrete(4)  ...     200\n",
              "ReversedAddition3-v0                                                        Discrete(4)  ...     200\n",
              "DuplicatedInput-v0                                                          Discrete(6)  ...     200\n",
              "Reverse-v0                                                                  Discrete(3)  ...     200\n",
              "CartPole-v0                                                                     Box(4,)  ...     200\n",
              "CartPole-v1                                                                     Box(4,)  ...     500\n",
              "MountainCar-v0                                                                  Box(2,)  ...     200\n",
              "MountainCarContinuous-v0                                                        Box(2,)  ...     999\n",
              "Pendulum-v0                                                                     Box(3,)  ...     200\n",
              "Acrobot-v1                                                                      Box(6,)  ...     500\n",
              "Blackjack-v0                             Tuple(Discrete(32), Discrete(11), Discrete(2))  ...    None\n",
              "KellyCoinflip-v0                                          Tuple(Box(1,), Discrete(301))  ...    None\n",
              "KellyCoinflipGeneralized-v0           Tuple(Box(1,), Discrete(296), Discrete(296), D...  ...    None\n",
              "FrozenLake-v0                                                              Discrete(16)  ...     100\n",
              "FrozenLake8x8-v0                                                           Discrete(64)  ...     200\n",
              "CliffWalking-v0                                                            Discrete(48)  ...    None\n",
              "NChain-v0                                                                   Discrete(5)  ...    1000\n",
              "Roulette-v0                                                                 Discrete(1)  ...     100\n",
              "Taxi-v2                                                                   Discrete(500)  ...     200\n",
              "GuessingGame-v0                                                             Discrete(4)  ...     200\n",
              "HotterColder-v0                                                             Discrete(4)  ...     200\n",
              "AirRaid-v0                                                             Box(250, 160, 3)  ...   10000\n",
              "AirRaid-v4                                                             Box(250, 160, 3)  ...  100000\n",
              "AirRaidDeterministic-v0                                                Box(250, 160, 3)  ...  100000\n",
              "AirRaidDeterministic-v4                                                Box(250, 160, 3)  ...  100000\n",
              "AirRaidNoFrameskip-v0                                                  Box(250, 160, 3)  ...  400000\n",
              "AirRaidNoFrameskip-v4                                                  Box(250, 160, 3)  ...  400000\n",
              "AirRaid-ram-v0                                                                Box(128,)  ...   10000\n",
              "AirRaid-ram-v4                                                                Box(128,)  ...  100000\n",
              "AirRaid-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "AirRaid-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "AirRaid-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "AirRaid-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Alien-v0                                                               Box(210, 160, 3)  ...   10000\n",
              "Alien-v4                                                               Box(210, 160, 3)  ...  100000\n",
              "AlienDeterministic-v0                                                  Box(210, 160, 3)  ...  100000\n",
              "AlienDeterministic-v4                                                  Box(210, 160, 3)  ...  100000\n",
              "AlienNoFrameskip-v0                                                    Box(210, 160, 3)  ...  400000\n",
              "AlienNoFrameskip-v4                                                    Box(210, 160, 3)  ...  400000\n",
              "Alien-ram-v0                                                                  Box(128,)  ...   10000\n",
              "Alien-ram-v4                                                                  Box(128,)  ...  100000\n",
              "Alien-ramDeterministic-v0                                                     Box(128,)  ...  100000\n",
              "Alien-ramDeterministic-v4                                                     Box(128,)  ...  100000\n",
              "Alien-ramNoFrameskip-v0                                                       Box(128,)  ...  400000\n",
              "Alien-ramNoFrameskip-v4                                                       Box(128,)  ...  400000\n",
              "Amidar-v0                                                              Box(250, 160, 3)  ...   10000\n",
              "Amidar-v4                                                              Box(250, 160, 3)  ...  100000\n",
              "AmidarDeterministic-v0                                                 Box(250, 160, 3)  ...  100000\n",
              "AmidarDeterministic-v4                                                 Box(250, 160, 3)  ...  100000\n",
              "AmidarNoFrameskip-v0                                                   Box(250, 160, 3)  ...  400000\n",
              "AmidarNoFrameskip-v4                                                   Box(250, 160, 3)  ...  400000\n",
              "Amidar-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Amidar-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Amidar-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Amidar-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Amidar-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Amidar-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "Assault-v0                                                             Box(250, 160, 3)  ...   10000\n",
              "Assault-v4                                                             Box(250, 160, 3)  ...  100000\n",
              "AssaultDeterministic-v0                                                Box(250, 160, 3)  ...  100000\n",
              "AssaultDeterministic-v4                                                Box(250, 160, 3)  ...  100000\n",
              "AssaultNoFrameskip-v0                                                  Box(250, 160, 3)  ...  400000\n",
              "AssaultNoFrameskip-v4                                                  Box(250, 160, 3)  ...  400000\n",
              "Assault-ram-v0                                                                Box(128,)  ...   10000\n",
              "Assault-ram-v4                                                                Box(128,)  ...  100000\n",
              "Assault-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Assault-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Assault-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Assault-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Asterix-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Asterix-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "AsterixDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "AsterixDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "AsterixNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "AsterixNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Asterix-ram-v0                                                                Box(128,)  ...   10000\n",
              "Asterix-ram-v4                                                                Box(128,)  ...  100000\n",
              "Asterix-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Asterix-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Asterix-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Asterix-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Asteroids-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "Asteroids-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "AsteroidsDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "AsteroidsDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "AsteroidsNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "AsteroidsNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "Asteroids-ram-v0                                                              Box(128,)  ...   10000\n",
              "Asteroids-ram-v4                                                              Box(128,)  ...  100000\n",
              "Asteroids-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Asteroids-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Asteroids-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Asteroids-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "Atlantis-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Atlantis-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "AtlantisDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "AtlantisDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "AtlantisNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "AtlantisNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Atlantis-ram-v0                                                               Box(128,)  ...   10000\n",
              "Atlantis-ram-v4                                                               Box(128,)  ...  100000\n",
              "Atlantis-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Atlantis-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Atlantis-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Atlantis-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "BankHeist-v0                                                           Box(250, 160, 3)  ...   10000\n",
              "BankHeist-v4                                                           Box(250, 160, 3)  ...  100000\n",
              "BankHeistDeterministic-v0                                              Box(250, 160, 3)  ...  100000\n",
              "BankHeistDeterministic-v4                                              Box(250, 160, 3)  ...  100000\n",
              "BankHeistNoFrameskip-v0                                                Box(250, 160, 3)  ...  400000\n",
              "BankHeistNoFrameskip-v4                                                Box(250, 160, 3)  ...  400000\n",
              "BankHeist-ram-v0                                                              Box(128,)  ...   10000\n",
              "BankHeist-ram-v4                                                              Box(128,)  ...  100000\n",
              "BankHeist-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "BankHeist-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "BankHeist-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "BankHeist-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "BattleZone-v0                                                          Box(210, 160, 3)  ...   10000\n",
              "BattleZone-v4                                                          Box(210, 160, 3)  ...  100000\n",
              "BattleZoneDeterministic-v0                                             Box(210, 160, 3)  ...  100000\n",
              "BattleZoneDeterministic-v4                                             Box(210, 160, 3)  ...  100000\n",
              "BattleZoneNoFrameskip-v0                                               Box(210, 160, 3)  ...  400000\n",
              "BattleZoneNoFrameskip-v4                                               Box(210, 160, 3)  ...  400000\n",
              "BattleZone-ram-v0                                                             Box(128,)  ...   10000\n",
              "BattleZone-ram-v4                                                             Box(128,)  ...  100000\n",
              "BattleZone-ramDeterministic-v0                                                Box(128,)  ...  100000\n",
              "BattleZone-ramDeterministic-v4                                                Box(128,)  ...  100000\n",
              "BattleZone-ramNoFrameskip-v0                                                  Box(128,)  ...  400000\n",
              "BattleZone-ramNoFrameskip-v4                                                  Box(128,)  ...  400000\n",
              "BeamRider-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "BeamRider-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "BeamRiderDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "BeamRiderDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "BeamRiderNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "BeamRiderNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "BeamRider-ram-v0                                                              Box(128,)  ...   10000\n",
              "BeamRider-ram-v4                                                              Box(128,)  ...  100000\n",
              "BeamRider-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "BeamRider-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "BeamRider-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "BeamRider-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "Berzerk-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Berzerk-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "BerzerkDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "BerzerkDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "BerzerkNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "BerzerkNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Berzerk-ram-v0                                                                Box(128,)  ...   10000\n",
              "Berzerk-ram-v4                                                                Box(128,)  ...  100000\n",
              "Berzerk-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Berzerk-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Berzerk-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Berzerk-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Bowling-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Bowling-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "BowlingDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "BowlingDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "BowlingNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "BowlingNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Bowling-ram-v0                                                                Box(128,)  ...   10000\n",
              "Bowling-ram-v4                                                                Box(128,)  ...  100000\n",
              "Bowling-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Bowling-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Bowling-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Bowling-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Boxing-v0                                                              Box(210, 160, 3)  ...   10000\n",
              "Boxing-v4                                                              Box(210, 160, 3)  ...  100000\n",
              "BoxingDeterministic-v0                                                 Box(210, 160, 3)  ...  100000\n",
              "BoxingDeterministic-v4                                                 Box(210, 160, 3)  ...  100000\n",
              "BoxingNoFrameskip-v0                                                   Box(210, 160, 3)  ...  400000\n",
              "BoxingNoFrameskip-v4                                                   Box(210, 160, 3)  ...  400000\n",
              "Boxing-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Boxing-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Boxing-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Boxing-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Boxing-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Boxing-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "Breakout-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Breakout-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "BreakoutDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "BreakoutDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "BreakoutNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "BreakoutNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Breakout-ram-v0                                                               Box(128,)  ...   10000\n",
              "Breakout-ram-v4                                                               Box(128,)  ...  100000\n",
              "Breakout-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Breakout-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Breakout-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Breakout-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Carnival-v0                                                            Box(250, 160, 3)  ...   10000\n",
              "Carnival-v4                                                            Box(250, 160, 3)  ...  100000\n",
              "CarnivalDeterministic-v0                                               Box(250, 160, 3)  ...  100000\n",
              "CarnivalDeterministic-v4                                               Box(250, 160, 3)  ...  100000\n",
              "CarnivalNoFrameskip-v0                                                 Box(250, 160, 3)  ...  400000\n",
              "CarnivalNoFrameskip-v4                                                 Box(250, 160, 3)  ...  400000\n",
              "Carnival-ram-v0                                                               Box(128,)  ...   10000\n",
              "Carnival-ram-v4                                                               Box(128,)  ...  100000\n",
              "Carnival-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Carnival-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Carnival-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Carnival-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Centipede-v0                                                           Box(250, 160, 3)  ...   10000\n",
              "Centipede-v4                                                           Box(250, 160, 3)  ...  100000\n",
              "CentipedeDeterministic-v0                                              Box(250, 160, 3)  ...  100000\n",
              "CentipedeDeterministic-v4                                              Box(250, 160, 3)  ...  100000\n",
              "CentipedeNoFrameskip-v0                                                Box(250, 160, 3)  ...  400000\n",
              "CentipedeNoFrameskip-v4                                                Box(250, 160, 3)  ...  400000\n",
              "Centipede-ram-v0                                                              Box(128,)  ...   10000\n",
              "Centipede-ram-v4                                                              Box(128,)  ...  100000\n",
              "Centipede-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Centipede-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Centipede-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Centipede-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "ChopperCommand-v0                                                      Box(210, 160, 3)  ...   10000\n",
              "ChopperCommand-v4                                                      Box(210, 160, 3)  ...  100000\n",
              "ChopperCommandDeterministic-v0                                         Box(210, 160, 3)  ...  100000\n",
              "ChopperCommandDeterministic-v4                                         Box(210, 160, 3)  ...  100000\n",
              "ChopperCommandNoFrameskip-v0                                           Box(210, 160, 3)  ...  400000\n",
              "ChopperCommandNoFrameskip-v4                                           Box(210, 160, 3)  ...  400000\n",
              "ChopperCommand-ram-v0                                                         Box(128,)  ...   10000\n",
              "ChopperCommand-ram-v4                                                         Box(128,)  ...  100000\n",
              "ChopperCommand-ramDeterministic-v0                                            Box(128,)  ...  100000\n",
              "ChopperCommand-ramDeterministic-v4                                            Box(128,)  ...  100000\n",
              "ChopperCommand-ramNoFrameskip-v0                                              Box(128,)  ...  400000\n",
              "ChopperCommand-ramNoFrameskip-v4                                              Box(128,)  ...  400000\n",
              "CrazyClimber-v0                                                        Box(210, 160, 3)  ...   10000\n",
              "CrazyClimber-v4                                                        Box(210, 160, 3)  ...  100000\n",
              "CrazyClimberDeterministic-v0                                           Box(210, 160, 3)  ...  100000\n",
              "CrazyClimberDeterministic-v4                                           Box(210, 160, 3)  ...  100000\n",
              "CrazyClimberNoFrameskip-v0                                             Box(210, 160, 3)  ...  400000\n",
              "CrazyClimberNoFrameskip-v4                                             Box(210, 160, 3)  ...  400000\n",
              "CrazyClimber-ram-v0                                                           Box(128,)  ...   10000\n",
              "CrazyClimber-ram-v4                                                           Box(128,)  ...  100000\n",
              "CrazyClimber-ramDeterministic-v0                                              Box(128,)  ...  100000\n",
              "CrazyClimber-ramDeterministic-v4                                              Box(128,)  ...  100000\n",
              "CrazyClimber-ramNoFrameskip-v0                                                Box(128,)  ...  400000\n",
              "CrazyClimber-ramNoFrameskip-v4                                                Box(128,)  ...  400000\n",
              "DemonAttack-v0                                                         Box(210, 160, 3)  ...   10000\n",
              "DemonAttack-v4                                                         Box(210, 160, 3)  ...  100000\n",
              "DemonAttackDeterministic-v0                                            Box(210, 160, 3)  ...  100000\n",
              "DemonAttackDeterministic-v4                                            Box(210, 160, 3)  ...  100000\n",
              "DemonAttackNoFrameskip-v0                                              Box(210, 160, 3)  ...  400000\n",
              "DemonAttackNoFrameskip-v4                                              Box(210, 160, 3)  ...  400000\n",
              "DemonAttack-ram-v0                                                            Box(128,)  ...   10000\n",
              "DemonAttack-ram-v4                                                            Box(128,)  ...  100000\n",
              "DemonAttack-ramDeterministic-v0                                               Box(128,)  ...  100000\n",
              "DemonAttack-ramDeterministic-v4                                               Box(128,)  ...  100000\n",
              "DemonAttack-ramNoFrameskip-v0                                                 Box(128,)  ...  400000\n",
              "DemonAttack-ramNoFrameskip-v4                                                 Box(128,)  ...  400000\n",
              "DoubleDunk-v0                                                          Box(250, 160, 3)  ...   10000\n",
              "DoubleDunk-v4                                                          Box(250, 160, 3)  ...  100000\n",
              "DoubleDunkDeterministic-v0                                             Box(250, 160, 3)  ...  100000\n",
              "DoubleDunkDeterministic-v4                                             Box(250, 160, 3)  ...  100000\n",
              "DoubleDunkNoFrameskip-v0                                               Box(250, 160, 3)  ...  400000\n",
              "DoubleDunkNoFrameskip-v4                                               Box(250, 160, 3)  ...  400000\n",
              "DoubleDunk-ram-v0                                                             Box(128,)  ...   10000\n",
              "DoubleDunk-ram-v4                                                             Box(128,)  ...  100000\n",
              "DoubleDunk-ramDeterministic-v0                                                Box(128,)  ...  100000\n",
              "DoubleDunk-ramDeterministic-v4                                                Box(128,)  ...  100000\n",
              "DoubleDunk-ramNoFrameskip-v0                                                  Box(128,)  ...  400000\n",
              "DoubleDunk-ramNoFrameskip-v4                                                  Box(128,)  ...  400000\n",
              "ElevatorAction-v0                                                      Box(210, 160, 3)  ...   10000\n",
              "ElevatorAction-v4                                                      Box(210, 160, 3)  ...  100000\n",
              "ElevatorActionDeterministic-v0                                         Box(210, 160, 3)  ...  100000\n",
              "ElevatorActionDeterministic-v4                                         Box(210, 160, 3)  ...  100000\n",
              "ElevatorActionNoFrameskip-v0                                           Box(210, 160, 3)  ...  400000\n",
              "ElevatorActionNoFrameskip-v4                                           Box(210, 160, 3)  ...  400000\n",
              "ElevatorAction-ram-v0                                                         Box(128,)  ...   10000\n",
              "ElevatorAction-ram-v4                                                         Box(128,)  ...  100000\n",
              "ElevatorAction-ramDeterministic-v0                                            Box(128,)  ...  100000\n",
              "ElevatorAction-ramDeterministic-v4                                            Box(128,)  ...  100000\n",
              "ElevatorAction-ramNoFrameskip-v0                                              Box(128,)  ...  400000\n",
              "ElevatorAction-ramNoFrameskip-v4                                              Box(128,)  ...  400000\n",
              "Enduro-v0                                                              Box(210, 160, 3)  ...   10000\n",
              "Enduro-v4                                                              Box(210, 160, 3)  ...  100000\n",
              "EnduroDeterministic-v0                                                 Box(210, 160, 3)  ...  100000\n",
              "EnduroDeterministic-v4                                                 Box(210, 160, 3)  ...  100000\n",
              "EnduroNoFrameskip-v0                                                   Box(210, 160, 3)  ...  400000\n",
              "EnduroNoFrameskip-v4                                                   Box(210, 160, 3)  ...  400000\n",
              "Enduro-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Enduro-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Enduro-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Enduro-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Enduro-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Enduro-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "FishingDerby-v0                                                        Box(210, 160, 3)  ...   10000\n",
              "FishingDerby-v4                                                        Box(210, 160, 3)  ...  100000\n",
              "FishingDerbyDeterministic-v0                                           Box(210, 160, 3)  ...  100000\n",
              "FishingDerbyDeterministic-v4                                           Box(210, 160, 3)  ...  100000\n",
              "FishingDerbyNoFrameskip-v0                                             Box(210, 160, 3)  ...  400000\n",
              "FishingDerbyNoFrameskip-v4                                             Box(210, 160, 3)  ...  400000\n",
              "FishingDerby-ram-v0                                                           Box(128,)  ...   10000\n",
              "FishingDerby-ram-v4                                                           Box(128,)  ...  100000\n",
              "FishingDerby-ramDeterministic-v0                                              Box(128,)  ...  100000\n",
              "FishingDerby-ramDeterministic-v4                                              Box(128,)  ...  100000\n",
              "FishingDerby-ramNoFrameskip-v0                                                Box(128,)  ...  400000\n",
              "FishingDerby-ramNoFrameskip-v4                                                Box(128,)  ...  400000\n",
              "Freeway-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Freeway-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "FreewayDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "FreewayDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "FreewayNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "FreewayNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Freeway-ram-v0                                                                Box(128,)  ...   10000\n",
              "Freeway-ram-v4                                                                Box(128,)  ...  100000\n",
              "Freeway-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Freeway-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Freeway-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Freeway-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Frostbite-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "Frostbite-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "FrostbiteDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "FrostbiteDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "FrostbiteNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "FrostbiteNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "Frostbite-ram-v0                                                              Box(128,)  ...   10000\n",
              "Frostbite-ram-v4                                                              Box(128,)  ...  100000\n",
              "Frostbite-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Frostbite-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Frostbite-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Frostbite-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "Gopher-v0                                                              Box(250, 160, 3)  ...   10000\n",
              "Gopher-v4                                                              Box(250, 160, 3)  ...  100000\n",
              "GopherDeterministic-v0                                                 Box(250, 160, 3)  ...  100000\n",
              "GopherDeterministic-v4                                                 Box(250, 160, 3)  ...  100000\n",
              "GopherNoFrameskip-v0                                                   Box(250, 160, 3)  ...  400000\n",
              "GopherNoFrameskip-v4                                                   Box(250, 160, 3)  ...  400000\n",
              "Gopher-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Gopher-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Gopher-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Gopher-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Gopher-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Gopher-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "Gravitar-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Gravitar-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "GravitarDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "GravitarDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "GravitarNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "GravitarNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Gravitar-ram-v0                                                               Box(128,)  ...   10000\n",
              "Gravitar-ram-v4                                                               Box(128,)  ...  100000\n",
              "Gravitar-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Gravitar-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Gravitar-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Gravitar-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Hero-v0                                                                Box(210, 160, 3)  ...   10000\n",
              "Hero-v4                                                                Box(210, 160, 3)  ...  100000\n",
              "HeroDeterministic-v0                                                   Box(210, 160, 3)  ...  100000\n",
              "HeroDeterministic-v4                                                   Box(210, 160, 3)  ...  100000\n",
              "HeroNoFrameskip-v0                                                     Box(210, 160, 3)  ...  400000\n",
              "HeroNoFrameskip-v4                                                     Box(210, 160, 3)  ...  400000\n",
              "Hero-ram-v0                                                                   Box(128,)  ...   10000\n",
              "Hero-ram-v4                                                                   Box(128,)  ...  100000\n",
              "Hero-ramDeterministic-v0                                                      Box(128,)  ...  100000\n",
              "Hero-ramDeterministic-v4                                                      Box(128,)  ...  100000\n",
              "Hero-ramNoFrameskip-v0                                                        Box(128,)  ...  400000\n",
              "Hero-ramNoFrameskip-v4                                                        Box(128,)  ...  400000\n",
              "IceHockey-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "IceHockey-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "IceHockeyDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "IceHockeyDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "IceHockeyNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "IceHockeyNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "IceHockey-ram-v0                                                              Box(128,)  ...   10000\n",
              "IceHockey-ram-v4                                                              Box(128,)  ...  100000\n",
              "IceHockey-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "IceHockey-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "IceHockey-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "IceHockey-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "Jamesbond-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "Jamesbond-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "JamesbondDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "JamesbondDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "JamesbondNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "JamesbondNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "Jamesbond-ram-v0                                                              Box(128,)  ...   10000\n",
              "Jamesbond-ram-v4                                                              Box(128,)  ...  100000\n",
              "Jamesbond-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Jamesbond-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Jamesbond-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Jamesbond-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "JourneyEscape-v0                                                       Box(230, 160, 3)  ...   10000\n",
              "JourneyEscape-v4                                                       Box(230, 160, 3)  ...  100000\n",
              "JourneyEscapeDeterministic-v0                                          Box(230, 160, 3)  ...  100000\n",
              "JourneyEscapeDeterministic-v4                                          Box(230, 160, 3)  ...  100000\n",
              "JourneyEscapeNoFrameskip-v0                                            Box(230, 160, 3)  ...  400000\n",
              "JourneyEscapeNoFrameskip-v4                                            Box(230, 160, 3)  ...  400000\n",
              "JourneyEscape-ram-v0                                                          Box(128,)  ...   10000\n",
              "JourneyEscape-ram-v4                                                          Box(128,)  ...  100000\n",
              "JourneyEscape-ramDeterministic-v0                                             Box(128,)  ...  100000\n",
              "JourneyEscape-ramDeterministic-v4                                             Box(128,)  ...  100000\n",
              "JourneyEscape-ramNoFrameskip-v0                                               Box(128,)  ...  400000\n",
              "JourneyEscape-ramNoFrameskip-v4                                               Box(128,)  ...  400000\n",
              "Kangaroo-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Kangaroo-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "KangarooDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "KangarooDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "KangarooNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "KangarooNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Kangaroo-ram-v0                                                               Box(128,)  ...   10000\n",
              "Kangaroo-ram-v4                                                               Box(128,)  ...  100000\n",
              "Kangaroo-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Kangaroo-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Kangaroo-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Kangaroo-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Krull-v0                                                               Box(210, 160, 3)  ...   10000\n",
              "Krull-v4                                                               Box(210, 160, 3)  ...  100000\n",
              "KrullDeterministic-v0                                                  Box(210, 160, 3)  ...  100000\n",
              "KrullDeterministic-v4                                                  Box(210, 160, 3)  ...  100000\n",
              "KrullNoFrameskip-v0                                                    Box(210, 160, 3)  ...  400000\n",
              "KrullNoFrameskip-v4                                                    Box(210, 160, 3)  ...  400000\n",
              "Krull-ram-v0                                                                  Box(128,)  ...   10000\n",
              "Krull-ram-v4                                                                  Box(128,)  ...  100000\n",
              "Krull-ramDeterministic-v0                                                     Box(128,)  ...  100000\n",
              "Krull-ramDeterministic-v4                                                     Box(128,)  ...  100000\n",
              "Krull-ramNoFrameskip-v0                                                       Box(128,)  ...  400000\n",
              "Krull-ramNoFrameskip-v4                                                       Box(128,)  ...  400000\n",
              "KungFuMaster-v0                                                        Box(210, 160, 3)  ...   10000\n",
              "KungFuMaster-v4                                                        Box(210, 160, 3)  ...  100000\n",
              "KungFuMasterDeterministic-v0                                           Box(210, 160, 3)  ...  100000\n",
              "KungFuMasterDeterministic-v4                                           Box(210, 160, 3)  ...  100000\n",
              "KungFuMasterNoFrameskip-v0                                             Box(210, 160, 3)  ...  400000\n",
              "KungFuMasterNoFrameskip-v4                                             Box(210, 160, 3)  ...  400000\n",
              "KungFuMaster-ram-v0                                                           Box(128,)  ...   10000\n",
              "KungFuMaster-ram-v4                                                           Box(128,)  ...  100000\n",
              "KungFuMaster-ramDeterministic-v0                                              Box(128,)  ...  100000\n",
              "KungFuMaster-ramDeterministic-v4                                              Box(128,)  ...  100000\n",
              "KungFuMaster-ramNoFrameskip-v0                                                Box(128,)  ...  400000\n",
              "KungFuMaster-ramNoFrameskip-v4                                                Box(128,)  ...  400000\n",
              "MontezumaRevenge-v0                                                    Box(210, 160, 3)  ...   10000\n",
              "MontezumaRevenge-v4                                                    Box(210, 160, 3)  ...  100000\n",
              "MontezumaRevengeDeterministic-v0                                       Box(210, 160, 3)  ...  100000\n",
              "MontezumaRevengeDeterministic-v4                                       Box(210, 160, 3)  ...  100000\n",
              "MontezumaRevengeNoFrameskip-v0                                         Box(210, 160, 3)  ...  400000\n",
              "MontezumaRevengeNoFrameskip-v4                                         Box(210, 160, 3)  ...  400000\n",
              "MontezumaRevenge-ram-v0                                                       Box(128,)  ...   10000\n",
              "MontezumaRevenge-ram-v4                                                       Box(128,)  ...  100000\n",
              "MontezumaRevenge-ramDeterministic-v0                                          Box(128,)  ...  100000\n",
              "MontezumaRevenge-ramDeterministic-v4                                          Box(128,)  ...  100000\n",
              "MontezumaRevenge-ramNoFrameskip-v0                                            Box(128,)  ...  400000\n",
              "MontezumaRevenge-ramNoFrameskip-v4                                            Box(128,)  ...  400000\n",
              "MsPacman-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "MsPacman-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "MsPacmanDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "MsPacmanDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "MsPacmanNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "MsPacmanNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "MsPacman-ram-v0                                                               Box(128,)  ...   10000\n",
              "MsPacman-ram-v4                                                               Box(128,)  ...  100000\n",
              "MsPacman-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "MsPacman-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "MsPacman-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "MsPacman-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "NameThisGame-v0                                                        Box(210, 160, 3)  ...   10000\n",
              "NameThisGame-v4                                                        Box(210, 160, 3)  ...  100000\n",
              "NameThisGameDeterministic-v0                                           Box(210, 160, 3)  ...  100000\n",
              "NameThisGameDeterministic-v4                                           Box(210, 160, 3)  ...  100000\n",
              "NameThisGameNoFrameskip-v0                                             Box(210, 160, 3)  ...  400000\n",
              "NameThisGameNoFrameskip-v4                                             Box(210, 160, 3)  ...  400000\n",
              "NameThisGame-ram-v0                                                           Box(128,)  ...   10000\n",
              "NameThisGame-ram-v4                                                           Box(128,)  ...  100000\n",
              "NameThisGame-ramDeterministic-v0                                              Box(128,)  ...  100000\n",
              "NameThisGame-ramDeterministic-v4                                              Box(128,)  ...  100000\n",
              "NameThisGame-ramNoFrameskip-v0                                                Box(128,)  ...  400000\n",
              "NameThisGame-ramNoFrameskip-v4                                                Box(128,)  ...  400000\n",
              "Phoenix-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Phoenix-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "PhoenixDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "PhoenixDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "PhoenixNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "PhoenixNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Phoenix-ram-v0                                                                Box(128,)  ...   10000\n",
              "Phoenix-ram-v4                                                                Box(128,)  ...  100000\n",
              "Phoenix-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Phoenix-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Phoenix-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Phoenix-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Pitfall-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Pitfall-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "PitfallDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "PitfallDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "PitfallNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "PitfallNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Pitfall-ram-v0                                                                Box(128,)  ...   10000\n",
              "Pitfall-ram-v4                                                                Box(128,)  ...  100000\n",
              "Pitfall-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Pitfall-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Pitfall-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Pitfall-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Pong-v0                                                                Box(210, 160, 3)  ...   10000\n",
              "Pong-v4                                                                Box(210, 160, 3)  ...  100000\n",
              "PongDeterministic-v0                                                   Box(210, 160, 3)  ...  100000\n",
              "PongDeterministic-v4                                                   Box(210, 160, 3)  ...  100000\n",
              "PongNoFrameskip-v0                                                     Box(210, 160, 3)  ...  400000\n",
              "PongNoFrameskip-v4                                                     Box(210, 160, 3)  ...  400000\n",
              "Pong-ram-v0                                                                   Box(128,)  ...   10000\n",
              "Pong-ram-v4                                                                   Box(128,)  ...  100000\n",
              "Pong-ramDeterministic-v0                                                      Box(128,)  ...  100000\n",
              "Pong-ramDeterministic-v4                                                      Box(128,)  ...  100000\n",
              "Pong-ramNoFrameskip-v0                                                        Box(128,)  ...  400000\n",
              "Pong-ramNoFrameskip-v4                                                        Box(128,)  ...  400000\n",
              "Pooyan-v0                                                              Box(250, 160, 3)  ...   10000\n",
              "Pooyan-v4                                                              Box(250, 160, 3)  ...  100000\n",
              "PooyanDeterministic-v0                                                 Box(250, 160, 3)  ...  100000\n",
              "PooyanDeterministic-v4                                                 Box(250, 160, 3)  ...  100000\n",
              "PooyanNoFrameskip-v0                                                   Box(250, 160, 3)  ...  400000\n",
              "PooyanNoFrameskip-v4                                                   Box(250, 160, 3)  ...  400000\n",
              "Pooyan-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Pooyan-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Pooyan-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Pooyan-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Pooyan-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Pooyan-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "PrivateEye-v0                                                          Box(210, 160, 3)  ...   10000\n",
              "PrivateEye-v4                                                          Box(210, 160, 3)  ...  100000\n",
              "PrivateEyeDeterministic-v0                                             Box(210, 160, 3)  ...  100000\n",
              "PrivateEyeDeterministic-v4                                             Box(210, 160, 3)  ...  100000\n",
              "PrivateEyeNoFrameskip-v0                                               Box(210, 160, 3)  ...  400000\n",
              "PrivateEyeNoFrameskip-v4                                               Box(210, 160, 3)  ...  400000\n",
              "PrivateEye-ram-v0                                                             Box(128,)  ...   10000\n",
              "PrivateEye-ram-v4                                                             Box(128,)  ...  100000\n",
              "PrivateEye-ramDeterministic-v0                                                Box(128,)  ...  100000\n",
              "PrivateEye-ramDeterministic-v4                                                Box(128,)  ...  100000\n",
              "PrivateEye-ramNoFrameskip-v0                                                  Box(128,)  ...  400000\n",
              "PrivateEye-ramNoFrameskip-v4                                                  Box(128,)  ...  400000\n",
              "Qbert-v0                                                               Box(210, 160, 3)  ...   10000\n",
              "Qbert-v4                                                               Box(210, 160, 3)  ...  100000\n",
              "QbertDeterministic-v0                                                  Box(210, 160, 3)  ...  100000\n",
              "QbertDeterministic-v4                                                  Box(210, 160, 3)  ...  100000\n",
              "QbertNoFrameskip-v0                                                    Box(210, 160, 3)  ...  400000\n",
              "QbertNoFrameskip-v4                                                    Box(210, 160, 3)  ...  400000\n",
              "Qbert-ram-v0                                                                  Box(128,)  ...   10000\n",
              "Qbert-ram-v4                                                                  Box(128,)  ...  100000\n",
              "Qbert-ramDeterministic-v0                                                     Box(128,)  ...  100000\n",
              "Qbert-ramDeterministic-v4                                                     Box(128,)  ...  100000\n",
              "Qbert-ramNoFrameskip-v0                                                       Box(128,)  ...  400000\n",
              "Qbert-ramNoFrameskip-v4                                                       Box(128,)  ...  400000\n",
              "Riverraid-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "Riverraid-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "RiverraidDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "RiverraidDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "RiverraidNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "RiverraidNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "Riverraid-ram-v0                                                              Box(128,)  ...   10000\n",
              "Riverraid-ram-v4                                                              Box(128,)  ...  100000\n",
              "Riverraid-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Riverraid-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Riverraid-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Riverraid-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "RoadRunner-v0                                                          Box(210, 160, 3)  ...   10000\n",
              "RoadRunner-v4                                                          Box(210, 160, 3)  ...  100000\n",
              "RoadRunnerDeterministic-v0                                             Box(210, 160, 3)  ...  100000\n",
              "RoadRunnerDeterministic-v4                                             Box(210, 160, 3)  ...  100000\n",
              "RoadRunnerNoFrameskip-v0                                               Box(210, 160, 3)  ...  400000\n",
              "RoadRunnerNoFrameskip-v4                                               Box(210, 160, 3)  ...  400000\n",
              "RoadRunner-ram-v0                                                             Box(128,)  ...   10000\n",
              "RoadRunner-ram-v4                                                             Box(128,)  ...  100000\n",
              "RoadRunner-ramDeterministic-v0                                                Box(128,)  ...  100000\n",
              "RoadRunner-ramDeterministic-v4                                                Box(128,)  ...  100000\n",
              "RoadRunner-ramNoFrameskip-v0                                                  Box(128,)  ...  400000\n",
              "RoadRunner-ramNoFrameskip-v4                                                  Box(128,)  ...  400000\n",
              "Robotank-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Robotank-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "RobotankDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "RobotankDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "RobotankNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "RobotankNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Robotank-ram-v0                                                               Box(128,)  ...   10000\n",
              "Robotank-ram-v4                                                               Box(128,)  ...  100000\n",
              "Robotank-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Robotank-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Robotank-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Robotank-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Seaquest-v0                                                            Box(210, 160, 3)  ...   10000\n",
              "Seaquest-v4                                                            Box(210, 160, 3)  ...  100000\n",
              "SeaquestDeterministic-v0                                               Box(210, 160, 3)  ...  100000\n",
              "SeaquestDeterministic-v4                                               Box(210, 160, 3)  ...  100000\n",
              "SeaquestNoFrameskip-v0                                                 Box(210, 160, 3)  ...  400000\n",
              "SeaquestNoFrameskip-v4                                                 Box(210, 160, 3)  ...  400000\n",
              "Seaquest-ram-v0                                                               Box(128,)  ...   10000\n",
              "Seaquest-ram-v4                                                               Box(128,)  ...  100000\n",
              "Seaquest-ramDeterministic-v0                                                  Box(128,)  ...  100000\n",
              "Seaquest-ramDeterministic-v4                                                  Box(128,)  ...  100000\n",
              "Seaquest-ramNoFrameskip-v0                                                    Box(128,)  ...  400000\n",
              "Seaquest-ramNoFrameskip-v4                                                    Box(128,)  ...  400000\n",
              "Skiing-v0                                                              Box(250, 160, 3)  ...   10000\n",
              "Skiing-v4                                                              Box(250, 160, 3)  ...  100000\n",
              "SkiingDeterministic-v0                                                 Box(250, 160, 3)  ...  100000\n",
              "SkiingDeterministic-v4                                                 Box(250, 160, 3)  ...  100000\n",
              "SkiingNoFrameskip-v0                                                   Box(250, 160, 3)  ...  400000\n",
              "SkiingNoFrameskip-v4                                                   Box(250, 160, 3)  ...  400000\n",
              "Skiing-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Skiing-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Skiing-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Skiing-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Skiing-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Skiing-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "Solaris-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Solaris-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "SolarisDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "SolarisDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "SolarisNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "SolarisNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Solaris-ram-v0                                                                Box(128,)  ...   10000\n",
              "Solaris-ram-v4                                                                Box(128,)  ...  100000\n",
              "Solaris-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Solaris-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Solaris-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Solaris-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "SpaceInvaders-v0                                                       Box(210, 160, 3)  ...   10000\n",
              "SpaceInvaders-v4                                                       Box(210, 160, 3)  ...  100000\n",
              "SpaceInvadersDeterministic-v0                                          Box(210, 160, 3)  ...  100000\n",
              "SpaceInvadersDeterministic-v4                                          Box(210, 160, 3)  ...  100000\n",
              "SpaceInvadersNoFrameskip-v0                                            Box(210, 160, 3)  ...  300000\n",
              "SpaceInvadersNoFrameskip-v4                                            Box(210, 160, 3)  ...  300000\n",
              "SpaceInvaders-ram-v0                                                          Box(128,)  ...   10000\n",
              "SpaceInvaders-ram-v4                                                          Box(128,)  ...  100000\n",
              "SpaceInvaders-ramDeterministic-v0                                             Box(128,)  ...  100000\n",
              "SpaceInvaders-ramDeterministic-v4                                             Box(128,)  ...  100000\n",
              "SpaceInvaders-ramNoFrameskip-v0                                               Box(128,)  ...  300000\n",
              "SpaceInvaders-ramNoFrameskip-v4                                               Box(128,)  ...  300000\n",
              "StarGunner-v0                                                          Box(210, 160, 3)  ...   10000\n",
              "StarGunner-v4                                                          Box(210, 160, 3)  ...  100000\n",
              "StarGunnerDeterministic-v0                                             Box(210, 160, 3)  ...  100000\n",
              "StarGunnerDeterministic-v4                                             Box(210, 160, 3)  ...  100000\n",
              "StarGunnerNoFrameskip-v0                                               Box(210, 160, 3)  ...  400000\n",
              "StarGunnerNoFrameskip-v4                                               Box(210, 160, 3)  ...  400000\n",
              "StarGunner-ram-v0                                                             Box(128,)  ...   10000\n",
              "StarGunner-ram-v4                                                             Box(128,)  ...  100000\n",
              "StarGunner-ramDeterministic-v0                                                Box(128,)  ...  100000\n",
              "StarGunner-ramDeterministic-v4                                                Box(128,)  ...  100000\n",
              "StarGunner-ramNoFrameskip-v0                                                  Box(128,)  ...  400000\n",
              "StarGunner-ramNoFrameskip-v4                                                  Box(128,)  ...  400000\n",
              "Tennis-v0                                                              Box(250, 160, 3)  ...   10000\n",
              "Tennis-v4                                                              Box(250, 160, 3)  ...  100000\n",
              "TennisDeterministic-v0                                                 Box(250, 160, 3)  ...  100000\n",
              "TennisDeterministic-v4                                                 Box(250, 160, 3)  ...  100000\n",
              "TennisNoFrameskip-v0                                                   Box(250, 160, 3)  ...  400000\n",
              "TennisNoFrameskip-v4                                                   Box(250, 160, 3)  ...  400000\n",
              "Tennis-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Tennis-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Tennis-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Tennis-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Tennis-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Tennis-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "TimePilot-v0                                                           Box(210, 160, 3)  ...   10000\n",
              "TimePilot-v4                                                           Box(210, 160, 3)  ...  100000\n",
              "TimePilotDeterministic-v0                                              Box(210, 160, 3)  ...  100000\n",
              "TimePilotDeterministic-v4                                              Box(210, 160, 3)  ...  100000\n",
              "TimePilotNoFrameskip-v0                                                Box(210, 160, 3)  ...  400000\n",
              "TimePilotNoFrameskip-v4                                                Box(210, 160, 3)  ...  400000\n",
              "TimePilot-ram-v0                                                              Box(128,)  ...   10000\n",
              "TimePilot-ram-v4                                                              Box(128,)  ...  100000\n",
              "TimePilot-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "TimePilot-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "TimePilot-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "TimePilot-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "Tutankham-v0                                                           Box(250, 160, 3)  ...   10000\n",
              "Tutankham-v4                                                           Box(250, 160, 3)  ...  100000\n",
              "TutankhamDeterministic-v0                                              Box(250, 160, 3)  ...  100000\n",
              "TutankhamDeterministic-v4                                              Box(250, 160, 3)  ...  100000\n",
              "TutankhamNoFrameskip-v0                                                Box(250, 160, 3)  ...  400000\n",
              "TutankhamNoFrameskip-v4                                                Box(250, 160, 3)  ...  400000\n",
              "Tutankham-ram-v0                                                              Box(128,)  ...   10000\n",
              "Tutankham-ram-v4                                                              Box(128,)  ...  100000\n",
              "Tutankham-ramDeterministic-v0                                                 Box(128,)  ...  100000\n",
              "Tutankham-ramDeterministic-v4                                                 Box(128,)  ...  100000\n",
              "Tutankham-ramNoFrameskip-v0                                                   Box(128,)  ...  400000\n",
              "Tutankham-ramNoFrameskip-v4                                                   Box(128,)  ...  400000\n",
              "UpNDown-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "UpNDown-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "UpNDownDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "UpNDownDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "UpNDownNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "UpNDownNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "UpNDown-ram-v0                                                                Box(128,)  ...   10000\n",
              "UpNDown-ram-v4                                                                Box(128,)  ...  100000\n",
              "UpNDown-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "UpNDown-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "UpNDown-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "UpNDown-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "Venture-v0                                                             Box(210, 160, 3)  ...   10000\n",
              "Venture-v4                                                             Box(210, 160, 3)  ...  100000\n",
              "VentureDeterministic-v0                                                Box(210, 160, 3)  ...  100000\n",
              "VentureDeterministic-v4                                                Box(210, 160, 3)  ...  100000\n",
              "VentureNoFrameskip-v0                                                  Box(210, 160, 3)  ...  400000\n",
              "VentureNoFrameskip-v4                                                  Box(210, 160, 3)  ...  400000\n",
              "Venture-ram-v0                                                                Box(128,)  ...   10000\n",
              "Venture-ram-v4                                                                Box(128,)  ...  100000\n",
              "Venture-ramDeterministic-v0                                                   Box(128,)  ...  100000\n",
              "Venture-ramDeterministic-v4                                                   Box(128,)  ...  100000\n",
              "Venture-ramNoFrameskip-v0                                                     Box(128,)  ...  400000\n",
              "Venture-ramNoFrameskip-v4                                                     Box(128,)  ...  400000\n",
              "VideoPinball-v0                                                        Box(250, 160, 3)  ...   10000\n",
              "VideoPinball-v4                                                        Box(250, 160, 3)  ...  100000\n",
              "VideoPinballDeterministic-v0                                           Box(250, 160, 3)  ...  100000\n",
              "VideoPinballDeterministic-v4                                           Box(250, 160, 3)  ...  100000\n",
              "VideoPinballNoFrameskip-v0                                             Box(250, 160, 3)  ...  400000\n",
              "VideoPinballNoFrameskip-v4                                             Box(250, 160, 3)  ...  400000\n",
              "VideoPinball-ram-v0                                                           Box(128,)  ...   10000\n",
              "VideoPinball-ram-v4                                                           Box(128,)  ...  100000\n",
              "VideoPinball-ramDeterministic-v0                                              Box(128,)  ...  100000\n",
              "VideoPinball-ramDeterministic-v4                                              Box(128,)  ...  100000\n",
              "VideoPinball-ramNoFrameskip-v0                                                Box(128,)  ...  400000\n",
              "VideoPinball-ramNoFrameskip-v4                                                Box(128,)  ...  400000\n",
              "WizardOfWor-v0                                                         Box(250, 160, 3)  ...   10000\n",
              "WizardOfWor-v4                                                         Box(250, 160, 3)  ...  100000\n",
              "WizardOfWorDeterministic-v0                                            Box(250, 160, 3)  ...  100000\n",
              "WizardOfWorDeterministic-v4                                            Box(250, 160, 3)  ...  100000\n",
              "WizardOfWorNoFrameskip-v0                                              Box(250, 160, 3)  ...  400000\n",
              "WizardOfWorNoFrameskip-v4                                              Box(250, 160, 3)  ...  400000\n",
              "WizardOfWor-ram-v0                                                            Box(128,)  ...   10000\n",
              "WizardOfWor-ram-v4                                                            Box(128,)  ...  100000\n",
              "WizardOfWor-ramDeterministic-v0                                               Box(128,)  ...  100000\n",
              "WizardOfWor-ramDeterministic-v4                                               Box(128,)  ...  100000\n",
              "WizardOfWor-ramNoFrameskip-v0                                                 Box(128,)  ...  400000\n",
              "WizardOfWor-ramNoFrameskip-v4                                                 Box(128,)  ...  400000\n",
              "YarsRevenge-v0                                                         Box(210, 160, 3)  ...   10000\n",
              "YarsRevenge-v4                                                         Box(210, 160, 3)  ...  100000\n",
              "YarsRevengeDeterministic-v0                                            Box(210, 160, 3)  ...  100000\n",
              "YarsRevengeDeterministic-v4                                            Box(210, 160, 3)  ...  100000\n",
              "YarsRevengeNoFrameskip-v0                                              Box(210, 160, 3)  ...  400000\n",
              "YarsRevengeNoFrameskip-v4                                              Box(210, 160, 3)  ...  400000\n",
              "YarsRevenge-ram-v0                                                            Box(128,)  ...   10000\n",
              "YarsRevenge-ram-v4                                                            Box(128,)  ...  100000\n",
              "YarsRevenge-ramDeterministic-v0                                               Box(128,)  ...  100000\n",
              "YarsRevenge-ramDeterministic-v4                                               Box(128,)  ...  100000\n",
              "YarsRevenge-ramNoFrameskip-v0                                                 Box(128,)  ...  400000\n",
              "YarsRevenge-ramNoFrameskip-v4                                                 Box(128,)  ...  400000\n",
              "Zaxxon-v0                                                              Box(210, 160, 3)  ...   10000\n",
              "Zaxxon-v4                                                              Box(210, 160, 3)  ...  100000\n",
              "ZaxxonDeterministic-v0                                                 Box(210, 160, 3)  ...  100000\n",
              "ZaxxonDeterministic-v4                                                 Box(210, 160, 3)  ...  100000\n",
              "ZaxxonNoFrameskip-v0                                                   Box(210, 160, 3)  ...  400000\n",
              "ZaxxonNoFrameskip-v4                                                   Box(210, 160, 3)  ...  400000\n",
              "Zaxxon-ram-v0                                                                 Box(128,)  ...   10000\n",
              "Zaxxon-ram-v4                                                                 Box(128,)  ...  100000\n",
              "Zaxxon-ramDeterministic-v0                                                    Box(128,)  ...  100000\n",
              "Zaxxon-ramDeterministic-v4                                                    Box(128,)  ...  100000\n",
              "Zaxxon-ramNoFrameskip-v0                                                      Box(128,)  ...  400000\n",
              "Zaxxon-ramNoFrameskip-v4                                                      Box(128,)  ...  400000\n",
              "CubeCrash-v0                                                             Box(40, 32, 3)  ...    None\n",
              "CubeCrashSparse-v0                                                       Box(40, 32, 3)  ...    None\n",
              "CubeCrashScreenBecomesBlack-v0                                           Box(40, 32, 3)  ...    None\n",
              "MemorizeDigits-v0                                                        Box(24, 32, 3)  ...    None\n",
              "\n",
              "[747 rows x 4 columns]"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vpQTLObqkeAc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "env = gym.make('MountainCar-v0')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BXnLjr8GmTpF",
        "colab_type": "code",
        "outputId": "245623e5-2ef4-4e6c-9c33-cf46bf9f1c65",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print('observation = {}'.format(env.observation_space))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "observation = Box(2,)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cmQZHo0TmgUy",
        "colab_type": "code",
        "outputId": "fdc64cbf-e0ae-4b33-acdd-8f1bec470f92",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print('action = {}'.format(env.action_space))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "action = Discrete(3)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RPtUJiLymsC9",
        "colab_type": "code",
        "outputId": "7e4aee28-5cd7-40c4-e4a9-519d0a1e45b6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print('range = {} - {}'.format(env.observation_space.low, env.observation_space.high))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "range = [-1.2  -0.07] - [0.6  0.07]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7TQh3HTjm72c",
        "colab_type": "code",
        "outputId": "c3faca07-b649-472a-8a01-0a322c01b2a2",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "print('action num = {}'.format(env.action_space.n))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "action num = 3\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FAWKzvuanISC",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class BespokeAgent:\n",
        "    def __init__(self, env):\n",
        "        pass \n",
        "\n",
        "    def decide(self, observation):\n",
        "        position, velocity = observation \n",
        "        lb = min(-0.09 * (position + 0.25) ** 2 + 0.03, 0.3 * (position + 0.9) ** 4 - 0.008)\n",
        "        ub = -0.07 * (position + 0.38) ** 2 + 0.07 \n",
        "        if lb < velocity < ub:\n",
        "            action = 2 \n",
        "        else:\n",
        "            action = 0 \n",
        "        return action \n",
        "\n",
        "    def learn(self, *args):\n",
        "        pass \n",
        "            "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "po9gFl4JoQja",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "agent = BespokeAgent(env)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xAQXmDOsoVVL",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def play_montecarlo(env, agent, render=False, train=False):\n",
        "    episode_reward = 0. \n",
        "    observation = env.reset()\n",
        "    while True:\n",
        "        if render:\n",
        "            env.render()\n",
        "        action = agent.decide(observation)\n",
        "        next_observation, reward, done, _ = env.step(action)\n",
        "        episode_reward += reward \n",
        "        if train:\n",
        "            agent.learn(observation, action, reward, done)\n",
        "        if done:\n",
        "            break \n",
        "        observation = next_observation \n",
        "    return episode_reward"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Zhh4GsRhpeJN",
        "colab_type": "code",
        "outputId": "eac8d6e2-5061-4ce0-816f-31ee075f3f13",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "env.seed(0)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[0]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 24
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6nZtLRetphNE",
        "colab_type": "code",
        "outputId": "59f4f6f4-8902-41cc-a294-ce2a82e0e8d7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "episode_reward = play_montecarlo(env, agent, render=True)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "NoSuchDisplayException",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mNoSuchDisplayException\u001b[0m                    Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-25-a04adc0a0487>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mepisode_reward\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplay_montecarlo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0menv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0magent\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrender\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;32m<ipython-input-23-95f26e82a8ca>\u001b[0m in \u001b[0;36mplay_montecarlo\u001b[0;34m(env, agent, render, train)\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mrender\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m             \u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrender\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      7\u001b[0m         \u001b[0maction\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0magent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecide\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobservation\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m         \u001b[0mnext_observation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreward\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maction\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/core.py\u001b[0m in \u001b[0;36mrender\u001b[0;34m(self, mode, **kwargs)\u001b[0m\n\u001b[1;32m    274\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    275\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mrender\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'human'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 276\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrender\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    277\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    278\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/classic_control/mountain_car.py\u001b[0m in \u001b[0;36mrender\u001b[0;34m(self, mode)\u001b[0m\n\u001b[1;32m     73\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     74\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 75\u001b[0;31m             \u001b[0;32mfrom\u001b[0m \u001b[0mgym\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menvs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclassic_control\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrendering\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     76\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrendering\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mViewer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscreen_width\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscreen_height\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     77\u001b[0m             \u001b[0mxs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin_position\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_position\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/gym/envs/classic_control/rendering.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     21\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     22\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 23\u001b[0;31m     \u001b[0;32mfrom\u001b[0m \u001b[0mpyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgl\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     24\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     25\u001b[0m     \u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefix\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Error occured while running `from pyglet.gl import *`\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msuffix\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"HINT: make sure you have OpenGL install. On Ubuntu, you can run 'apt-get install python-opengl'. If you're running on a server, you may need a virtual frame buffer; something like this should work: 'xvfb-run -s \\\"-screen 0 1400x900x24\\\" python <your_script.py>'\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/gl/__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m    235\u001b[0m     \u001b[0;31m# trickery is for circular import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    236\u001b[0m     \u001b[0m_pyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_sys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodules\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 237\u001b[0;31m     \u001b[0;32mimport\u001b[0m \u001b[0mpyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwindow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/window/__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m   1888\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0m_is_pyglet_doc_run\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1889\u001b[0m     \u001b[0mpyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwindow\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodules\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1890\u001b[0;31m     \u001b[0mgl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_create_shadow_window\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/gl/__init__.py\u001b[0m in \u001b[0;36m_create_shadow_window\u001b[0;34m()\u001b[0m\n\u001b[1;32m    207\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    208\u001b[0m     \u001b[0;32mfrom\u001b[0m \u001b[0mpyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwindow\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mWindow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 209\u001b[0;31m     \u001b[0m_shadow_window\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mWindow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvisible\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    210\u001b[0m     \u001b[0m_shadow_window\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mswitch_to\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    211\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/window/xlib/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    169\u001b[0m                     \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_event_handlers\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    170\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m         \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXlibWindow\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    172\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    173\u001b[0m         \u001b[0;32mglobal\u001b[0m \u001b[0m_can_detect_autorepeat\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/window/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, width, height, caption, resizable, style, fullscreen, visible, vsync, display, screen, config, context, mode)\u001b[0m\n\u001b[1;32m    573\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    574\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 575\u001b[0;31m             \u001b[0mdisplay\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpyglet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_display\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    576\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    577\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mscreen\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/canvas/__init__.py\u001b[0m in \u001b[0;36mget_display\u001b[0;34m()\u001b[0m\n\u001b[1;32m     93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m     \u001b[0;31m# Otherwise, create a new display and return it.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 95\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mDisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     97\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pyglet/canvas/xlib.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, name, x_screen)\u001b[0m\n\u001b[1;32m    121\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_display\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mxlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mXOpenDisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    122\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_display\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 123\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mNoSuchDisplayException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Cannot connect to \"%s\"'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    125\u001b[0m         \u001b[0mscreen_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mxlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mXScreenCount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_display\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mNoSuchDisplayException\u001b[0m: Cannot connect to \"None\""
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rNQfEcIIpqsk",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def play_montecarlo(env, agent, render=False, train=False):\n",
        "    episode_reward = 0. # 记录回合总奖励，初始化为0\n",
        "    observation = env.reset() # 重置游戏环境，开始新回合\n",
        "    while True: # 不断循环，直到回合结束\n",
        "        if render: # 判断是否显示\n",
        "            env.render() # 显示图形界面，图形界面可以用 env.close() 语句关闭\n",
        "        action = agent.decide(observation)\n",
        "        next_observation, reward, done, _ = env.step(action) # 执行动作\n",
        "        episode_reward += reward # 收集回合奖励\n",
        "        if train: # 判断是否训练智能体\n",
        "            agent.learn(observation, action, reward, done) # 学习\n",
        "        if done: # 回合结束，跳出循环\n",
        "            break\n",
        "        observation = next_observation\n",
        "    return episode_reward # 返回回合总奖励"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5TDycQosqF8O",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "env.seed(0) # 设置随机数种子,只是为了让结果可以精确复现,一般情况下可删去\n",
        "episode_reward = play_montecarlo(env, agent, render=True)\n",
        "print('回合奖励 = {}'.format(episode_reward))\n",
        "env.close() # 此语句可关闭图形界面"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LoiqkFhXqJ2-",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}